我想提取一个按父级排序的用户列表及其父级之后的每个孩子,如下所示:
id | name | parent_id
----| ---- | --------
1 | max | 0
2 | john| 0
3 | jim | 1
4 | jack| 1
5 | merry| 2
我想要一个查询来提取每个父项,然后提取它的子项:像这样
max
Jim
jack
john
merry
我可以用它来互相循环。但我搜索是否有一个SQL查询解决方案。 我也测试了使用连接表的方式,下面由@Tucker提供,但它返回: 它接近但不仅仅是我想要的。它检索这个:
-------------
max | jim
max |jack
john |merry
---------------------
但我想要例如
-----------------
0 |max
max |Jim
max |jack
0 |john
john |merry
------------------
答案 0 :(得分:0)
我的语法可能略有偏差,但你可以像这样加入表格
SELECT * FROM (
SELECT a.name AS `PARENT`, b.name AS `CHILD`
FROM db.table a
JOIN db.table b ON b.parent_id=a.id
WHERE a.parent_id=0
UNION ALL
SELECT c.parent_id AS `PARENT`,c.name AS `CHILD`
FROM db.table c WHERE c.parent_id=0
);
您的示例中的行排序通过sql实现很难。