将Oracle CONNECT BY迁移到PostgreSQL 10

问题描述 投票:0回答:1

我有此SQL:

SELECT count(*) as ct
          FROM classifications cls
WHERE
   cls.classification_id = :classification_id
START WITH cls.classification_id = :root_classification_id
CONNECT BY NOCYCLE PRIOR cls.classification_id = cls.parent_id

并且需要将其迁移到postgresql 10。

我已经安装了扩展tablefunc并尝试使用connectedby。这是我的尝试:

SELECT count(*) as ct
          FROM classifications cls
WHERE
   cls.classification_id = :classification_id

union
                  SELECT count(classification_id) FROM connectby('classifications','classification_id','parent_id',:root_classification_id,5)
                  as t(classification_id varchar, parent_id varchar,level int) 

问题是联合是错误的方法,因为这样您会得到2个计数结果。

sql postgresql database-migration recursive-query
1个回答
2
投票
无需使用tablefunc扩展名。使用recursive CTE
© www.soinside.com 2019 - 2024. All rights reserved.