Mysql 按子群排序
我需要帮助构建一个MySQL查询,该查询将按特定顺序输出所有行。表定义包含Mysql 按子群排序,mysql,sql,Mysql,Sql,我需要帮助构建一个MySQL查询,该查询将按特定顺序输出所有行。表定义包含id、sub\u id和name。sub\u id列用于指示给定行应分组在id中,如果sub\u id为空/0/null,则该行为顶级行 所需的排序顺序是按name排序,但我希望所有sub\u id行都分组到相应的id行中。在每个子组中,每行都应按名称排序 例如,给定此无序表: id sub_id name ===================== 1 0 bananas 2 0
id
、sub\u id
和name
。sub\u id
列用于指示给定行应分组在id
中,如果sub\u id
为空/0/null,则该行为顶级行
所需的排序顺序是按name
排序,但我希望所有sub\u 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
(子组之间的间距仅用于说明)
帮忙?提前谢谢 这应该可以做到:
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
谢谢你聪明的回答。不过,我认为这将首先按id排序。因此,例如,id=1、name='xyz'的一行和id=2、name='abc'的另一行的排序将不正确。另外,我希望sub_id=NULL的行首先在子组内排序。我建议您为此设置一个SQLFIDLE。我不确定它是否认为不起作用,或者它确实不起作用。。。