首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用MySQL COALESCE指定主排序顺序

如何使用MySQL COALESCE指定主排序顺序
EN

Stack Overflow用户
提问于 2018-07-19 06:36:23
回答 1查看 38关注 0票数 0

我有一个旧表,它使用Parent/Child结构及其ID,我需要先按父表的Names排序,然后按子表(Parents have null parent_id)排序。

我已经能够使用下面显示的SQL让它按子名称排序,但无法让它对主节点执行相同的操作(Cables应该在Cameras之前)。

代码语言:javascript
复制
SELECT a.id, a.parent_id,a.name
FROM `equipment` AS a
ORDER BY COALESCE(a.parent_id, a.id), a.parent_id IS NOT NULL, a.name

我已经修补了各种订单的可能性,但无法获得我需要的类型。任何指导都是值得感谢的。

表行

代码语言:javascript
复制
id  | parent_id | name
--------------------------------
1   | null      | Cameras
2   | 1         | HandyCam 2000 5-50
3   | 1         | Netgear 360
4   | null      | Tripods
5   | 4         | Deluxe Tripod
6   | null      | Lighting
7   | 6         | Light Diffuser
10  | 6         | Really bright bulbs
11  | 1         | 16MM Handheld
12  | 6         | Big Lightbulb assembly
13  | 4         | HandyCam Stand
16  | 4         | My New Tripod
181 | null      | Cables

排序的结果(仅对子项排序)

代码语言:javascript
复制
id  | parent_id | name
--------------------------------
1   | null      | Cameras
11  | 1         |    16MM Handheld
2   | 1         |    HandyCam 2000 5-50
3   | 1         |    Netgear 360
4   | null      | Tripods
5   | 4         |    Deluxe Tripod
13  | 4         |    HandyCam Stand
16  | 4         |    My New Tripod
6   | null      | Lighting
10  | 6         |    Really bright bulbs
12  | 6         |    Big Lightbulb assembly
7   | 6         |   Light Diffuser
181 | null      | Cables
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 06:46:08

您需要将表与自身连接起来,这样才能获得每个子级的父级的名称,并在排序中使用该名称,而不是使用COALESCE(a.parent_id, a.id)

代码语言:javascript
复制
SELECT a.id, a.parent_id,IF(a.parent_id IS NULL, a.name, CONCAT('   ', a.name)) AS name
FROM `studio_tvs_equipment` AS a
JOIN studio_tvs_equipment AS b ON IF(a.parent_id IS NULL, a.id = b.id, b.id = a.parent_id)
ORDER BY IF(a.parent_id IS NULL, a.name, b.name), a.parent_id IS NOT NULL, a.name

DEMO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51411919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档