gpt4 book ai didi

MySQL 对行组进行排序

转载 作者:行者123 更新时间:2023-11-30 23:23:02 27 4
gpt4 key购买 nike

我有一个表 menu,其中包含通过外键引用同一表中其他行的行。
这里是表:

+----+---------------+--------+
| id | title | parent |
+----+---------------+--------+
| 1 | Enseignements | NULL |
| 2 | Juments | 4 |
| 3 | Étalons | 4 |
| 4 | Animaux | NULL |
| 5 | Tarifs | 1 |
+----+---------------+--------+

我想根据层次结构和字母顺序对行进行分组,如下所示:

+----+---------------+--------+
| id | title | parent |
+----+---------------+--------+
| 4 | Animaux | NULL |
| 3 | Étalons | 4 |
| 2 | Juments | 4 |
| 1 | Enseignements | NULL |
| 5 | Tarifs | 1 |
+----+---------------+--------+

我刚刚设法将来自同一分支的项目分组。子级项目按标题 排序。事实上,我希望所有的第一级项目也按title排序,像这样:

+----+---------------+--------+
| id | title | parent |
+----+---------------+--------+
| 1 | Enseignements | NULL |
| 5 | Tarifs | 1 |
| 4 | Animaux | NULL |
| 3 | Étalons | 4 |
| 2 | Juments | 4 |
+----+---------------+--------+

使用代码:

SELECT title, COALESCE(parent, id), parent
FROM menu
GROUP BY COALESCE(parent, id), title

我该怎么做?

最佳答案

SQL Fiddle

MySQL 5.5.30 架构设置:

CREATE TABLE Table1
(`id` int, `title` varchar(13), `parent` varchar(4))
;

INSERT INTO Table1
(`id`, `title`, `parent`)
VALUES
(1, 'Enseignements', NULL),
(2, 'Juments', '4'),
(3, 'Étalons', '4'),
(4, 'Animaux', NULL),
(5, 'Tarifs', '1')
;

查询 1:

SELECT title, COALESCE(parent, id), parent
FROM Table1
GROUP BY 2,1
order by COALESCE(parent, id) desc,title asc

Results :

|         TITLE | COALESCE(PARENT, ID) | PARENT |
-------------------------------------------------
| Animaux | 4 | (null) |
| Étalons | 4 | 4 |
| Juments | 4 | 4 |
| Enseignements | 1 | (null) |
| Tarifs | 1 | 1 |

关于MySQL 对行组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713910/

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