您的位置:首页 > 数据库 > MySQL

mysql 如何根据父级字段得到所有子级

2017-06-09 09:32 211 查看
给出表格,表命名为t_boy

id  son(儿子)  father(父亲)

1     f1           f2

2     f2           f3

3     f3           f4

4     f4           f5

5     f5           f6

现给出f4,找出他所有后代?

首先最简单的方法是,通过连接进行查询。如下:

SELECT t1.*, ID.level

FROM t_boy t1, (

        SELECT A.name AS A, B.name AS B, C.name AS C, D.name AS D, E.name AS E, F.name AS F,

            CASE

                WHEN ISNULL(F.name) THEN 5

                WHEN ISNULL(E.name) THEN 4

                WHEN ISNULL(D.name) THEN 3

                WHEN ISNULL(C.name) THEN 2

                WHEN ISNULL(B.name) THEN 1

                ELSE 0

            END AS LEVEL

        FROM t_boy A

            LEFT JOIN t_boy B ON B.father = A.name

            LEFT JOIN t_boy C ON C.father = B.name

            LEFT JOIN t_boy D ON D.father = C.name

            LEFT JOIN t_boy E ON E.father = D.name

            LEFT JOIN t_boy F ON F.father = E.name

        WHERE A.name = 'f6'

    ) ID

WHERE t1.name IN(ID.B, ID.C, ID.D, ID.E, ID.F);

2.通过递归方式,你准备好了吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息