面试时被问到这个问题,但我对SQL不熟悉。 我希望有人能帮我解决这个问题,这样我就能理解这个概念。
"id" "name" "parentid"
------------------------
"1" "BOSS1" null
"2" "A" "1"
"3" "B" "1"
"4" "C" "3"
"5" "BOSS2" null
"6" "Q" "5"
"7" "T" "6"
- 给定一个id,找到所有的 child
所以对于 1,它应该打印 1, 2 ,3, 4
我认为这很简单,但我不知道如何使用联合构造查询...
谢谢
最佳答案
为了比“ child ”更深入,CTE 工作得很好 -
WITH CTEExample (ID, Name, Parent)
AS
(
SELECT e.ID, e.Name, e.Parent
FROM dbo.ExampleTable e WHERE e.ID = 1
UNION ALL
SELECT e.ID, e.Name, e.Parent
FROM dbo.ExampleTable e
JOIN CTEExample ON e.Parent = CTEExample.ID
)
select ID from CTEExample
这应该返回 1,2,3,4。
编辑 - 看起来 Jon 在这方面先于我;尽管我认为他的第 4 行应该是 where ID = 1
,而不是 where ParentID = 1
希望这对您有所帮助。
关于sql父子表面试题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837674/