[英]How to get a set of unique parents given a list of children in SQL
我有一個包含heirarchical數據的表:
ID Name ParentID
--- --------- ---------
1 Alpha 2
2 Beta 3
3 Gamma NULL
4 Delta 2
5 Epsilon 6
6 Zeta NULL
7 Eta 1
8 Theta NULL
給定ID列表,如何獲取所有唯一根父ID的列表? 我不想要中級父母。
例如,假設我給出的ID列表是1, 2, 3, 4, 5
。 我要找的結果是:
ID
---
3
6
顯然,這需要某種遞歸查詢。 我認為可能有可能實現使用公共表表達式(CTE),但我真的很難理解它是如何完成的。 到目前為止,我看到的所有例子似乎都將所有的孩子和父母聚集在一起,以產生一個完整的層次表,這不是我想要的。 是否有任何SQL專家可以給我一個正確方向的推動? 我確實可以通過多次查詢到數據庫來迭代地執行此操作,但我希望不必訴諸於此。
我應該注意到我使用的是SQL Server 2008。
這是一個例子。 CTE從孩子到父母的懲罰。
; with Cte as
(
select ID
, ParentID
from Table1
where ID in (1, 2, 3, 4, 5)
union all
select parent.ID
, parent.ParentID
from Table1 parent
join Cte child
on child.ParentID = parent.ID
)
select distinct ID
from Cte
where ParentID is null
你為什么不試試:
HAVING(count(ParentID)) < 2
在您的查詢結束時。 適當地使用小組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.