我有一个像这样的 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
谢谢你的时间。
MySQL不支持递归查询,所以如果一个孩子可以生孩子,就没有办法制定这样的查询。否则,此查询应按所需的顺序返回行:
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
请在此处查看小提琴。诀窍是按id
(如果是父行)或按parent_id
(如果是子项)对行进行排序,然后按id
。