Php 从自引用mysql表中检索父子层次结构
我有一个类似这样的mysql表,删除了其他列,与问题无关:Php 从自引用mysql表中检索父子层次结构,php,mysql,pdo,Php,Mysql,Pdo,我有一个类似这样的mysql表,删除了其他列,与问题无关: id parent_id ----------- ----------- 1 0 2 0 3 0 4 3 5 2 6 1 7 1 父项是父项id为0的行 我想知道是否有一种方法
id parent_id
----------- -----------
1 0
2 0
3 0
4 3
5 2
6 1
7 1
父项是父项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对行进行排序;如果是子项,则按id对行进行排序。MySQL不支持递归查询,因此如果子项可以有子项,则无法制定此类查询。否则,此查询应按您需要的顺序返回行:
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
请看小提琴。诀窍是,如果是父项,则按id排序,如果是子项,则按父id排序,然后按id排序。Genius。以前从未见过CASE的用法。强大的天才以前从未见过CASE的用法。强大的