gpt4 book ai didi

MySQL 用联合选择层次结构

转载 作者:行者123 更新时间:2023-11-29 17:36:33 24 4
gpt4 key购买 nike

我有这样的层次结构数据:

Id, Related
1, 0
2, 1
3, 1
4, 1
5, 4
6, 3
7, 0
8, 7
9, 3
10, 8

我想选择 2 个 parent ,然后为每个 parent 找到 2 个 child

结果:

id
1
2
3
7
8

类似于:

select * from TABLE T1 where T1.related=0 order by T2.id limit 2 
union
select * from TABLE T2 where T1.id=T2.related order by T2.id limit 2

我一直在研究 mysql select 分层数据,但找不到任何可以帮助解决我的情况的东西。

最佳答案

您想要选择所有带有 Related = 0 的记录。然后您要随机选择最多两个 child 。一种解决方案是获取最小子 ID 和最大子 ID。您可以在子查询中查找 parent 。

select
related as parent_id,
min(id) as child1_id,
max(id) as child2_id
from mytable
where related in (select id from mytable where related = 0)
group by related;

如果您不想两次显示相同的子 ID(如果只有一个子 ID,即 min(id) = max(id)),请将其更改为:

select
related as parent_id,
min(id) as child1_id,
nullif(max(id), min(id)) as child2_id
...

这些查询不会显示没有子项的 related = 0 记录,但好吧,没有子项,他们无论如何都不是父项:-)

关于MySQL 用联合选择层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50238782/

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