查询以获取父项的子记录

时间:2014-11-14 03:53:56

标签: mysql sql hierarchical-data

我有下表。

+-------+--------+-------+
|     Id|    Name| Parent|
+-------+--------+-------+
|      0|       A|     -1|
|      1|       B|      0|
|      2|       C|      1|
|      3|       D|      2|
|      4|       E|      2|
|      5|       F|      2|
|      6|       G|      2|
|      7|       H|      2|
|      8|       I|      2|
+-------+--------+-------+

-1作为父级意味着它没有父级。层次结构可以达到7-8级。 我需要得到所有的孩子(直接+间接)。我试过像:

SELECT Id, NAME, @pv:=Id AS 'Parent' FROM tbl
JOIN
(SELECT @pv:=-1)tmp
WHERE Parent=@pv

但它不起作用。

1 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT t1.name AS lev1, t2.name as lev2
FROM tbl1 AS t1
LEFT JOIN tbl1 AS t2 ON t2.parent = t1.id
WHERE t1.id = 2;

预期产出

+-------+--------+
|   lev1|    lev2|
+-------+--------+
|      C|       D|
|      C|       E|
|      C|       F|
|      C|       G|
|      C|       H|
|      C|       I|
+-------+--------+

Referance