2015-10-08 265 views
1

我需要获取父级的所有子节点吗?MySQL树层次结构查询?

我的表说如下

id 

parent_id 

,说数据是

id parent_id 

1  -1 

2  1 

3  -1 

4  2 

5  4 

我想查询将返回所有子为给定ID

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

+0

它是多层次还是只有一个层次? parent-> chield或者great-parent - > parent - > child? –

+0

其多级 – Ninad

+0

你不能用一个单一的查询(而不是在mysql中)。你将需要一个功能。在这里看到:http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/ –

回答

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查询。