Wer*_*ner 14 mysql sql sql-order-by
我有一张桌子:
+------+---------+-
| id | parent |
+------+---------+
| 2043 | NULL |
| 2044 | 2043 |
| 2045 | 2043 |
| 2049 | 2043 |
| 2047 | NULL |
| 2048 | 2047 |
| 2043 | 2047 |
+------+---------+
Run Code Online (Sandbox Code Playgroud)
它显示了一个简单的2级"亲子" - 核心.我怎样才能通过SELECT语句来获取上面列表中的顺序,这意味着:第一个父项,第一个父项的子项,第二个父项,第二个父项的子项等等(如果我有,我可以添加为孩子们订购BY ...我希望).是否可以添加排序字段?
lc.*_*lc. 54
包括按id排序子项:
ORDER BY COALESCE(parent, id), parent IS NOT NULL, id
Run Code Online (Sandbox Code Playgroud)
说明:
COALESCE(parent, id):首先按父母的id排序(有效地组合在一起).parent IS NOT NULL:将父行放在组的顶部id:最后排序所有的孩子(同一个父,并且parent不是null)小智 6
如果您的表使用0而不是null指示没有父项的条目:
id | parent
-------------
1233 | 0
1234 | 1233
1235 | 0
1236 | 1233
1237 | 1235
Run Code Online (Sandbox Code Playgroud)
使用greatest而不是coalesce检查值不等于0:
ORDER BY GREATEST(parent, id), parent != 0, id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9768 次 |
| 最近记录: |