gpt4 book ai didi

MySQL父子一查询选择

转载 作者:可可西里 更新时间:2023-11-01 07:15:02 25 4
gpt4 key购买 nike

我有一个包含如下字段的 MySQL 表:

id            name             parent
1 Fruit 0
2 Meat 0
3 Orange 1
4 Beef 2

其中parent字段表示上层id。例如Fruit id是1,Orange是其中一个水果所以parent是1。

但是我想做一个高效的 MySQL 查询来获取格式为 parent->children->parent->children 格式的所有记录。我该怎么做?

查询的结果记录应该是这样的:

id            name             parent
1 Fruit 0
3 Orange 1
2 Meat 0
4 Beef 2

最佳答案

您需要一个 mysql 不支持的递归连接。您唯一可以做的就是确定最大深度级别(我的情况是 1,因为您有 p->c),这样您就可以确定所需的连接数:

最大层级深度=自连接数:

SELECT
p.id as parent_id,
p.name as parent_id,
c1.id as child_id,
c1.name as child_name
FROM
my_table p
LEFT JOIN my_table c1
ON c1.parent = p.id
WHERE
p.parent=0

例如,如果最大深度级别为 3,则需要 3 个自连接:

SELECT
p.id as parent_id,
p.name as parent_id,
c1.id as child_id_1,
c1.name as child_name_1,
c2.id as child_id_2,
c2.name as child_name_2,
c3.id as child_id_3,
c3.name as child_name_3
FROM
my_table p
LEFT JOIN my_table c1
ON c1.parent = p.id
LEFT JOIN my_table c2
ON c2.parent = c1.id
LEFT JOIN my_table c3
ON c3.parent = c2.id
WHERE
p.parent=0

关于MySQL父子一查询选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16808784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com