小编典典

MySql:父级和子级ORDER BY

sql

我有一张像这样的桌子:

+------+---------+-
| id   | parent  |
+------+---------+
| 2043 |    NULL |
| 2044 |    2043 |
| 2045 |    2043 |
| 2049 |    2043 |
| 2047 |    NULL |
| 2048 |    2047 |
| 2043 |    2047 |
+------+---------+

该图显示了一个简单的两级“父母-孩子”
-corelation。我如何通过SELECT语句进行排序来获得如上列表中所示的顺序,这意味着:第一亲,第二亲,第二亲,第二亲等等(如果我有的话,我可以添加为孩子们订购订单…我希望)。添加排序字段是否可能?


阅读 237

收藏
2021-03-17

共1个答案

小编典典

包括按ID对子级进行排序:

ORDER BY COALESCE(parent, id), parent IS NOT NULL, id

SQL Fiddle示例

解释:

  • COALESCE(parent, id):首先按(有效地分组在一起)父母的ID排序。
  • parent IS NOT NULL:将父行放在组的顶部
  • id:最后对所有子级进行排序(父级相同,并且parent不为null)
2021-03-17