mysql - 在同一张表中排序子/父
问题描述
我有一个 MySQL 表,如下所示:
member_id | name | parent |....
1 | john | 0 |
2 | alex | 0 |
3 | nikita | 1 |
4 | sarah | 1 |
.
.
.
我想用parrent
. 我试试这个但不工作:
SELECT * FROM `members` ORDER BY COALESCE(`parrent`,`member_id`),`parrent` !=0,`member_id`
所有孩子都排序了,但父母不和他们在一起。
我想要这个结果:
member_id | name | parent |....
2 | alex | 0 |
1 | john | 0 |
3 | nikita | 1 |
4 | sarah | 1 |
.
.
.
首先是父母,然后是孩子。
有没有更好的解决方案来实现这个表?我需要一张包含家庭的表格
解决方案
coalesce()
不起作用,因为父母是0
. 您可以nullif()
改用:
ORDER BY COALESCE(NULLIF(parent, 0), member_id),
(parent = 0) DESC,
member_id
请注意,我使用(parent = 0) DESC
第二个键。我更喜欢首先表达我们想要的匹配的逻辑,DESC
将真值放在假值之前。
推荐阅读
- excel - VBA:如何处理读取 XML 文件的空数组
- wordpress - 按子项计数排序 wordpress 分类父项
- javascript - $http 结果没有从缓存中检索?
- c# - Keydown事件如何用热键监听
- jenkins - 如何在 jenkins 中运行 Testcafe Saucelabs
- javascript - 需要为字符串中的数字总和提供资金,不包括带有 for 循环的字符串
- php - 从 Laravel/Lumen 将 AWS SQS 消息释放回队列
- javascript - JavaScript,如何以某种方式加密“纺车”的输出值
- android - Searchview 与 Recyclerview 的重叠问题
- c# - 为什么即使我传递了值和正确的参数,参数也会丢失?