对于sql专家来说,我的问题可能并不具有挑战性。我想将我的sql重写为ansi-sql。如何在Oracle中将sql下面的内容更改为ansi-sql?
select *
from TEST r
start with r.childid=@CHILDID
connect by prior r.PARENTID=r.childid and r.recordstatus=1发布于 2015-11-09 08:08:19
ANSI SQL等效项将是一个递归的公共表表达式:
with recursive tree as (
select *
from test
where childid = .... --<< this is the START WITH part
union all
select child.*
from test child
join tree parent ON child.parentid = parent.childid and child.recordstatus = 1 --<< this is the CONNECT BY part
)
select *
from tree如果您还想将recordstatus = 1条件应用于递归启动,则我不是100%。
Oracle不符合这里的标准,您不允许使用recursive关键字。
因此,您需要从上面的查询中删除 recursive (Server也是如此)
有关递归公共表表达式(在Oracle中称为“子查询分解”)的更多详细信息,请参见手册:
https://stackoverflow.com/questions/33604723
复制相似问题