sql递归查询(MySQL5.7)

ogq8wdun  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(813)

我不知道如何进行sql递归查询。数据库结构如下:

Name               Id  Id Parent
Food                0   -1 
Pizza               1    0 
Pasta               2    0 
Pasta with Tomato   3    2

每一行都有一个名称、一个id(表中的主键)和一个父id,如您所见,这是递归的。如果一行没有父行,则id设置为-1。在西红柿面食的例子中,我需要取父名,如果父名本身有父名,我也需要取这个名字,以此类推,直到我到达根。什么是正确的递归查询?感谢那些帮助我的人!

p5fdfcr1

p5fdfcr11#

实际上,我必须执行左联接以将表扩展到所需的布局:

select a.*, b.name as parent_name, b.ID as parent_id, c.ID_Parent as parent_ID2, 
       d.name as parent_name2
from [sample_tbl] a
left join [sample_tbl] b
on a.ID_parent = b.ID
left join [sample_tbl] c
on b.ID = c.ID
left join [sample_tbl] d
on c.ID_Parent = d.ID
;

输出:
姓名id\家长姓名家长id\家长id\家长id2家长\U姓名2
食物0-1空匹萨1 0食物0-1空面食2 0食物0-1空番茄面食3 2面食2 0食物

相关问题