按子组排序

时间:2016-05-07 16:12:52

标签: mysql sql

我需要帮助构建一个MySQL查询,它将按特定顺序输出所有行。表定义包含idsub_idnamesub_id列用于指示给定行应在id内分组,如果sub_id为空/ 0 / null,则该行为顶级行。< / p>

所需的排序顺序是name,但我希望所有sub_id行都在相应的id行内进行分组。在每个子组中,每一行都应按名称排序。

例如,给定这个无序表:

id   sub_id   name
=====================
1    0        bananas
2    0        apples
3    0        apricots
4    2        strawberries
5    2        cherries
6    1        oranges

所需的顺序是:

id   sub_id   name
=====================
2    0        apples
5    2        cherries
4    2        strawberries

3    0        apricots

1    0        bananas
6    1        oranges

(子组之间的间距仅用于说明目的)

帮助?提前谢谢!

1 个答案:

答案 0 :(得分:1)

这应该这样做:

SELECT t.id, t.sub_id, t.name
FROM table t LEFT JOIN table p on t.sub_id = p.id
ORDER BY COALESCE(p.id, t.id), t.name