Sql 写完整的子项链
我有下面的学生桌Sql 写完整的子项链,sql,sql-server,join,common-table-expression,self-join,Sql,Sql Server,Join,Common Table Expression,Self Join,我有下面的学生桌 id boss_id name age 1 NULL NEW_A 10 2 1 NEW_A 12 3 1 NEW_A 14 4 3 NEW_A 16 5 3 NEW_A 18 6 5 NEW_A 20 7 1 NEW_B 22 8 1 NEW_B 24 9 8 NEW_B 26 10 9
id boss_id name age
1 NULL NEW_A 10
2 1 NEW_A 12
3 1 NEW_A 14
4 3 NEW_A 16
5 3 NEW_A 18
6 5 NEW_A 20
7 1 NEW_B 22
8 1 NEW_B 24
9 8 NEW_B 26
10 9 NEW_B 28
11 4 NEW_B 44
下面的查询
select s.id as student, boss.id as boss from Student s, Student boss
where s.boss_id = boss.id --and s.id = 11
order by s.id
检索
2 1
3 1
4 3
5 3
6 5
7 1
8 1
9 8
10 9
11 4
我想返回全链从属关系
例如,对于学生11,它应该是
student_id boss_id
11 4
4 3
3 1
sql是否允许根据我的需要编写查询?您可以使用递归CTE执行此操作:
;With Cte As
(
Select T.id, T.boss_id
From YourTable T
Where T.Id = 11
Union All
Select T.id, T.boss_id
From YourTable T
Join Cte C On C.boss_id = T.id
And T.boss_id Is Not Null
)
Select id, boss_id
From Cte
您可以使用递归CTE执行此操作:
;With Cte As
(
Select T.id, T.boss_id
From YourTable T
Where T.Id = 11
Union All
Select T.id, T.boss_id
From YourTable T
Join Cte C On C.boss_id = T.id
And T.boss_id Is Not Null
)
Select id, boss_id
From Cte
正在使用的dbms是什么?@vkp我使用ms sql,但我更喜欢universe sql。问题是universe太大了,没有每个人都使用相同的数据库tools@JuanCarlos Oropeza至少sql 99数据库管理系统在使用什么?@vkp我使用ms sql,但我更喜欢universe sql问题是universe太大了,并不是每个人都使用相同的tools@Juan卡洛斯·奥罗佩扎至少sql 99