我需要帮助构建一个MySQL查询,它将按特定顺序输出所有行。表定义包含id
,sub_id
和name
。 sub_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
(子组之间的间距仅用于说明目的)
帮助?提前谢谢!
答案 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