Tsql 从树状结构返回父id
我正在尝试获取与父级相关的所有子级ID(多级)。我认为使用递归可以做到这一点,在尝试了查询之后,它没有返回预期的结果,我甚至不确定这是否是实现这一点的编写方式,也不确定我的错误在哪里 预期结果是返回指定位置的所有市和县 例如,如果我传递了英格兰的id(id=1),我想返回所有与之关联的id。它最多可以是4-5级关联 比如说Tsql 从树状结构返回父id,tsql,sql-server-2012,recursive-query,Tsql,Sql Server 2012,Recursive Query,我正在尝试获取与父级相关的所有子级ID(多级)。我认为使用递归可以做到这一点,在尝试了查询之后,它没有返回预期的结果,我甚至不确定这是否是实现这一点的编写方式,也不确定我的错误在哪里 预期结果是返回指定位置的所有市和县 例如,如果我传递了英格兰的id(id=1),我想返回所有与之关联的id。它最多可以是4-5级关联 比如说 Id Location ----- --------------- 1 England 3 London (as its
Id Location
----- ---------------
1 England
3 London (as its associated with England)
5 Ealing (as associated with London)
6 Westminster (as associated with London)
7 Camden (as associated with London)
8 Barnet (as associated with London)
。
.
有人能告诉我如何解决这个问题吗。这是解决这个问题的正确方法吗
谢谢。本教程很好地概述了如何在sql中存储层次结构数据
最初来自这个问题:您正朝着正确的方向前进 考虑一下我取得的成果:
;WITH locationFamily AS
(
SELECT id
,location_name
,parent_id
,0 as level
FROM location
WHERE parent_id IS NULL
and id = 1
UNION ALL
SELECT ls.id
,ls.location_name
,ls.parent_id
,level + 1
FROM location ls
INNER JOIN locationFamily lf ON ls.parent_id= lf.id
)
SELECT *
FROM locationFamily
将id条件移动到CTE中的第一个选择,更改id连接的别名