[英]PostgreSQL - migrate a query with 'start with' and 'connect by' in oracle
I have the following query in oracle. 我在oracle中有以下查询。 I want to convert it to PostgreSQL form.
我想将其转换为PostgreSQL形式。 Could someone help me out in this,
有人可以帮我这个忙吗,
SELECT user_id, user_name, reports_to, position
FROM pr_operators
START WITH reports_to = 'dpercival'
CONNECT BY PRIOR user_id = reports_to;
A something like this should work for you ( SQL Fiddle ): 这样的事情应该为您工作( SQL Fiddle ):
WITH RECURSIVE q AS (
SELECT po.user_id,po.user_name,po.reports_to,po.position
FROM pr_operators po
WHERE po.reports_to = 'dpercival'
UNION ALL
SELECT po.user_id,po.user_name,po.reports_to,po.position
FROM pr_operators po
JOIN q ON q.user_id=po.reports_to
)
SELECT * FROM q;
You can read more on recursive CTE's in the docs . 您可以在docs中阅读有关递归CTE的更多信息 。
Note : your design looks strange -- reports_to
contains string literals, yet it is being comapred with user_id
which typicaly is of type integer
. 注意 :您的设计看起来很奇怪
reports_to
包含字符串文字,但是它与user_id
共同映射,而user_id
通常是integer
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.