如何订购SQL行以创建漂亮的汇总?

时间:2010-07-09 12:01:19

标签: sql mysql

这是我的表:

CREATE TABLE t (id INT, parent INT, FOREIGN KEY(parent) REFERENCES t(id));

这是我拥有的数据集合:

id    parent
1     NULL
2     NULL
3     1
4     1

我想选择它们并按此命令:

id    parent
1     NULL
3     1
4     1
2     NULL

我找不到合适的方法(在MySQL 5+中)。请帮忙,谢谢!

4 个答案:

答案 0 :(得分:3)

如果只有孩子和父母,没有孙子,你可以使用:

select  id
,       parent
from    yourtable
order by
        coalesce(parent, id)

答案 1 :(得分:1)

在简单查询中不可能,您必须一次按1列排序。我没有尝试过MySQL。如果您使用另一个有序查询加入一个有序查询,您可能可以执行某些操作,但我怀疑您是否可以保证数据库版本或不同数据集的顺序。

更简单的选择可能是从数据库按特定顺序处理它,并按照您希望通过前端代码的顺序显示它。

答案 2 :(得分:1)

SELECT * FROM REFERENCES ORDER BY id=2, parent , id

或者只是

SELECT * FROM REFERENCES ORDER BY id=2 , id

答案 3 :(得分:0)

我相信这应该可以解决问题

SELECT id, parent FROM t ORDER BY IF(parent is NOT NULL,parent,id)