如何通过首先显示父ID,然后显示其下的所有子ID来对结果进行排序

时间:2013-06-27 17:31:39

标签: mysql sql-order-by

我有这样的结果

ID >> Parent
1  >> 0
2  >> 0
3  >> 0
4  >> 1
5  >> 1
6  >> 2
7  >> 1
8  >> 0 
9  >> 3
10 >> 0

我想以一种方式对记录进行排序,我通过父母及其下面的所有子项来显示记录。所以结果看起来像这样

1  >> 0
4  >> 1
5  >> 1
7  >> 1
2  >> 0
6  >> 2
3  >> 0
9  >> 3
8  >> 0 
10 >> 0

如何使用MySQL按顺序对记录进行排序?

由于

2 个答案:

答案 0 :(得分:1)

MySQL不支持递归查询。但是如果父母不能拥有父母(比如你的样本数据),你可以使用这样的东西:

SELECT   *
FROM     mytable
ORDER BY CASE WHEN Parent=0 THEN ID ELSE Parent END, ID

请参阅小提琴here

答案 1 :(得分:0)

或者也许......

SELECT id,COALESCE(parent,id) p FROM my_table ORDER BY p,id;