ORDER BY前一个元素id = parent_id

时间:2015-05-26 11:04:18

标签: mysql sql parent-child sql-order-by

我试图建立一个链式的项目列表,其中第一个项目的parent_id = 0,而其他项目应按最后一个元素的id与其parent_id相关的方式排序

这是预期的结果:

| id | parent_id |
|----|-----------|
| 9  | 0         |
| 2  | 9         |
| 3  | 2         |
| 14 | 3         |
| 5  | 14        |

我该怎么做这种ORDER BY子句?目前我在

parent_id = 0 desc, parent_id desc

但是输出这个是错误的,当然,因为它不依赖于最后一个ID,它只是运行parent_id的desc排序:

| id | parent_id |
|----|-----------|
| 9  | 0         |
| 5  | 14        |
| 2  | 9         |
| 14 | 3         |
| 3  | 2         |

提前致谢。

1 个答案:

答案 0 :(得分:0)

订购方:

'parent_id = 0 desc, COALESCE(id, parent_id), id'

似乎解决了我的问题。