我正在尝试获取与父级相关的所有子级ID(多级)。我认为使用递归可以做到这一点,在尝试查询后,它没有返回预期的结果,我甚至不确定这是解决这个问题的写作方式,也不确定我哪里出了问题。
预期结果是返回指定位置的所有市县。
例如,如果我通过了英格兰的id(id=1),我想返回与之相关的所有id。它可以是4-5级的关联
例如
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 Fiddle示例
有人能告诉我如何解决这个问题的正确方向吗。这是解决这个问题的正确方法吗?
谢谢。
您正朝着正确的方向前进。
想想我取得的成果:
;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中的第一个select,更改id连接的别名。
本教程提供了在sql中存储分层数据的良好概述。
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
最初来自这个问题:如何在mySQL表