gpt4 book ai didi

mysql - 按父 ID 的顺序选择记录

转载 作者:可可西里 更新时间:2023-11-01 06:31:35 25 4
gpt4 key购买 nike

简单的问题..就是无法按照我需要的顺序获取结果集:p

我有一个表“类别”

id    | name     | parent
1 apple 0
2 macintosh 1
3 atari 0
4 st 3
5 lisa 1

我正在尝试选择获取以下结果集:

1   apple      0
5 lisa 1
2 macintosh 1
3 atari 0
4 st 3

所以换句话说,我想要所有行的所有列,其中带有父行的行紧跟在它们的父行之后,并且所有行都按字母顺序排序。

parent a
child a
child b
parent b
child a

我现在使用的查询没有正确地在他们的 parent 之后重新排序行

SELECT a.*, b.* FROM categories a RIGHT JOIN categories b ON b.parent = a.id

最佳答案

如果那些没有 parent 的人在他们的 parent 列中有 null,您的陈述将非常简单:

SELECT id, name, parent FROM categories order by coalesce(parent, id), id;

如果您坚持使用 0 表示没有父级,则可以使用更冗长的 CASE WHEN ... THEN ... 语句。

编辑:

-- Sorting by name instead
select a.id, a.name, a.parent
from categories a left join categories b on a.parent=b.id
order by coalesce(b.name, a.name), a.name

关于mysql - 按父 ID 的顺序选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259225/

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