我需要获取父级的所有子节点吗?
我的表格如下:
id
parent_id
并说数据是
id parent_id
1 -1
2 1
3 -1
4 2
5 4
我想要一个查询,它将返回给定id的所有子项
例如,如果我通过1,它将返回2,4,5
答案 0 :(得分:1)
SET @input = 1;
SELECT GROUP_CONCAT(lvl SEPARATOR ',') children FROM (
SELECT @q := (SELECT GROUP_CONCAT(id SEPARATOR ',') FROM tbl
WHERE parent_id IN (@q)) AS lvl FROM tbl
JOIN
(SELECT @q := @input) tbl
WHERE parent_id IN (@q)) t;
以下是查询的SQL Fiddle。