嗨,
WITH状态可以存在于WHERE子句中吗?
例如:
SELECT tbl1.name , tbl1.ID
FROM DBTABLE0001 AS tbl1
WHERE (
exists(
WITH H (super, ID, depth) AS
(
SELECT ROOT.parent, ROOT.ID , 0
FROM DBTABLE0001 ROOT
WHERE ROOT.ID = tbl1.ID
UNION ALL
SELECT PARENT.parent, PARENT.ID , CHILD.depth + 1
FROM H CHILD, DBTABLE0001 PARENT
WHERE PARENT.ID = CHILD.super
)
SELECT ID
FROM H
WEHER H.ID = "abcd"
ORDER BY depth
)
) 谢谢,莫。
发布于 2011-04-17 17:11:17
您应该将with语句放在查询的开头。然后你可以在任何地方使用它:
WITH H (super, ID, depth) AS
(SELECT ROOT.parent, ROOT.ID , 0
FROM DBTABLE0001 ROOT
WHERE ROOT.ID = DBTABLE0001.ID
UNION ALL
SELECT PARENT.parent, PARENT.ID , CHILD.depth + 1 FROM H CHILD, DBTABLE0001 PARENT
WHERE PARENT.ID = CHILD.super)
SELECT tbl1.name , tbl1.ID
FROM DBTABLE0001 AS tbl1
WHERE (exists(SELECT ID FROM H WEHER H.ID = "abcd" ORDER BY depth)) https://stackoverflow.com/questions/5692565
复制相似问题