我有一个像这样的mysql表(删除了其他列,与问题无关):
id parent_id
----------- -----------
1 0
2 0
3 0
4 3
5 2
6 1
7 1
“父级”是具有parent_id = 0
的行。
我想知道是否有办法制定查询,以便MySQL在父母之后输出每个孩子的行?
预期的结果是
id parent_id
----------- -----------
1 0
6 1
7 1
2 0
5 2
3 0
4 3
感谢您的时间。
答案 0 :(得分:4)
MySQL不支持递归查询,因此如果孩子可以有孩子,则无法制定此类查询。否则,此查询应按您需要的顺序返回行:
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
请参阅小提琴here。诀窍是按id
排序,如果它是父项,或parent_id
如果它是小孩,然后按id
排序。