MySQL Tree-Hierarchy查询?

时间:2015-10-08 13:04:29

标签: mysql sql stored-procedures recursion

我需要获取父级的所有子节点吗?

我的表格如下:

id

parent_id

并说数据是

id   parent_id

1     -1

2      1

3     -1

4      2

5      4

我想要一个查询,它将返回给定id的所有子项

例如,如果我通过1,它将返回2,4,5

1 个答案:

答案 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