这是我的表:
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+中)。请帮忙,谢谢!
答案 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)