Oracle中,如果我有一个表定义为…

CREATE TABLE taxonomy
    (
    key NUMBER(11) NOT NULL CONSTRAINT taxPkey PRIMARY KEY,
    value VARCHAR2(255),
    taxHier NUMBER(11)
    );
ALTER TABLE
    taxonomy
ADD CONSTRAINT
    taxTaxFkey
FOREIGN KEY
    (taxHier)
REFERENCES
    tax(key);

有了这些价值观…

key value   taxHier
0   zero    null
1   one     0
2   two     0
3   three   0
4   four    1
5   five    2
6   six     2

此查询语法…

SELECT
     value
FROM
    taxonomy
CONNECT BY
    PRIOR key = taxHier
START WITH
    key = 0;

将屈服于…

zero
one
four
two
five
six
three

这是如何在PostgreSQL年内完成的?

推荐答案

在Postgres中使用RECURSIVE CTE分:

WITH RECURSIVE cte AS (
   SELECT key, value, 1 AS level
   FROM   taxonomy
   WHERE  key = 0

   UNION  ALL
   SELECT t.key, t.value, c.level + 1
   FROM   cte      c
   JOIN   taxonomy t ON t.taxHier = c.key
   )
SELECT value
FROM   cte
ORDER  BY level;

我之前的回答中的详细信息和文档链接:

Postgresql相关问答推荐

Postgres SQL执行加入

在Go中,如何在没有数据库包的情况下运行PostgreSQL查询?

为什么在使用PostGIS时,英国郡的几何图形会出现在几内亚湾?

单个WAL文件中的操作会影响哪些表和多少行

PostgreSQL:在 select 和 group by 中使用不同的列不会导致错误

数据库所有者无法授予 Select 权限

Npgsql中准备好的语句和参数化查询有什么区别?

从单选插入到多个表

为什么不能超过 10 个并发连接到 Postgres RDS 数据库

如何计算过滤器中的百分比

Windows上的psql:错误:编码UTF8的字节序列无效:0xc8 0x20

新数据未保存到 Postgres 上的 Rails 数组列

计算 PostgreSQL 中给定 GPS 坐标的日出和日落时间

Postgres中的GROUP BY - JSON数据类型不相等?

psql中set、\set和\pset的区别

我应该使用哪个 postgresql 包?

如何从 postgresql Select 查询中的 age() 函数中仅获取年份

在 Windows 10 中执行时,Docker 容器关闭并给出data directory has wrong ownership错误

仅在存在时重命名列

Postgresql - 更新规则 - 可能有一个最后修改日期,自动更新该行的on update?