[英]Using CONNECT BY to get all parents and one child in Hierarchy through SQL query in Oracle
我正在瀏覽一些關於CONNECT BY用法的帖子。 我需要找到的是,如果我想要獲得所有父母(即,最多根)和一個節點的一個孩子,例如4,該怎么辦。
看來我必須使用以下兩種的聯合: -
SELECT *
FROM hierarchy
START WITH id = 4
CONNECT BY id = PRIOR parent
union
SELECT *
FROM hierarchy
WHERE LEVEL =<2
START WITH
id = 4
CONNECT BY
parent = PRIOR id
有沒有更好的方法來做到這一點,一些更優化的解決方法?
您應該能夠使用子選擇(和DISTINCT
)來查找4
所有子項:
Select Distinct *
From hierarchy
Start With id In ( Select id
From hierarchy
Where parent = 4 )
Connect By id = Prior parent
使用UNION
您至少可以從第二個查詢中刪除CONNECT BY
:
Select *
From hierarchy
Start With id = 4
Connect By id = Prior parent
Union
Select *
From hierarchy
Where parent = 4
永遠不要使用SELECT *
,始終為實際需要的列命名。 這使您的查詢更易於閱讀,維護和優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.