2015-10-08 287 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查詢。