【发布时间】:2017-05-09 05:04:56
【问题描述】:
我想将下面提到的 oracle 分层查询转换为 postgresql
SELECT catalog_id, sub_tree_id
FROM my_catalog
CONNECT BY PRIOR catalog_id = sub_tree_id;
我已尝试使用以下 postgresql 查询,但未获得预期结果
WITH RECURSIVE q AS (
SELECT po.catalog_id,po.sub_tree_id
FROM my_catalog po
UNION ALL
SELECT po.catalog_id,po.sub_tree_id
FROM my_catalog po
JOIN q ON q.catalog_id=po.sub_tree_id
)
SELECT * FROM q;
ORACLE 输出(预期结果)
POSTGRESQL 输出(实际结果)
【问题讨论】:
-
编辑您的问题,并粘贴
create table和insertPostgreSQL 语句(至少)以重现您的问题。从您的图像来看,Oracle 和 PostgreSQL 甚至看起来都没有相同的数据。如果他们没有相同的数据,不同的结果是不可避免的。 -
你能展示一下原始数据的样子吗?
-
这些查询是等效的,它们提供完全相同的行集。两个结果集中的行顺序可以不同,但这是正确的,因为根据定义,除非使用
order by子句,否则 SQL 中的表和结果集没有任何顺序,请参阅:en.wikipedia.org/wiki/Result_set。因此,您不会在两个结果的顶部看到相同的几行。 -
@krokodilko 虽然订购可能是个问题,但 PG 查询指定不正确。就像现在一样,它永远不会迭代。
标签: postgresql oracle11g hierarchical-query