给定一个表中的记录在同一个表中有父项,并且那些父项有自己的父项,如果不同的记录可以有不同数量的父项,什么查询会为我获取所请求记录的所有父项的记录。
示例:我有记录 4 的 ID 并想获取所有父记录 (1,2,3)。当然我可以获取记录 4,查看谁是父项并获取记录 3,查看谁是父项并获取记录 2,直到我获取的记录没有父项,但是有没有一个查询可以让我得到所有的记录记录?
Example Table:
ID | Type | Parent ID
----------------------------
1 |Master|
2 |Sub 1 | 1
3 |Sub 2 | 2
4 |Sub 3 | 3
5 |Master|
6 |Sub 1 | 5
最佳答案
如果您假设一个固定的最大深度级别,则可以表示层次结构。例如,在此示例中,我假设深度不超过四个级别。如果没有用于递归评估的公用表表达式,则没有超出此类解决方案或使用变量的单一查询方法。
Select T1.Id, T1.Type
, Concat( Coalesce( Concat(Cast(T4.Id As char(10)),','),'')
, Coalesce( Concat(Cast(T3.Id As char(10)),','),'')
, Coalesce( Concat(Cast(T2.Id As char(10)),','),''))
As Hierarchy
From ExampleTable As T1
Left Join ExampleTable As T2
On T2.Id = T1.ParentId
Left Join ExampleTable As T3
On T3.Id = T2.ParentId
Left Join ExampleTable As T4
On T4.Id = T3.ParentId
关于mysql - 嵌套记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367229/