我的表设置类似于:
MyTable
Id INT
Name VARCHAR
ParentId INT
现在让我们说这个表中的数据如下:
1 AAA NULL
2 BBB 1
3 CCC 2
4 DDD 1
5 EEE 4
6 FFF NULL
如何编写一个带有id(int)的函数,并将所有可能子元素的ID表返回给该父元素?
例如,我会调用SomeFunction(1)并期望得到:
1
2
3
4
5
是否能够编写一个可以工作的函数,但只有当孩子不是同一个父母时,我才能够支持这种情况。
答案 0 :(得分:0)
答案 1 :(得分:0)
递归CTE是要走的路。特定id的所有子项的更简单版本是:
with children as (
select id
from mytable
where id = 1
union all
select m.id
from mytable m join
children c
on m.parentid = c.id
)
select *
from children