0

我有一张像

ID | ParentID |Children| Name | Address
----------------------------------------
1  |  Null    |        | Xyz  | Home
2  |   1      |        | ABC  | Home
3  |   2      |        | DEF  | Home
4  |   3      |        | GHI  | Home
5  |   3      |        | GHI  | Home
6  |   1      |        | GHI  | Home

我需要用查询填充孩子,这些是直系孩子。例如,1 岁的孩子将是 2,3 岁的孩子将是 4,5

所以查询后的表应该是这样的

ID | ParentID |Children| Name | Address
----------------------------------------
1  |  Null    |  2,6   | Xyz  | Home
2  |   1      |   3    | ABC  | Home
3  |   2      |  4,5   | DEF  | Home
4  |   3      | Null   | GHI  | Home
5  |   3      | Null   | GHI  | Home
6  |   1      | Null   | GHI  | Home

我知道我可以将 group_concat 函数与更新查询一起使用,但无法获得确切的查询。如何使用 MySQL 查询来做到这一点?

4

1 回答 1

0

您可以创建一个连接子查询的子查询,ID并将其与表本身连接起来。

UPDATE  tableName a
        INNER JOIN
        (
            SELECT  a.ID, GROUP_CONCAT(b.ID) Children
            FROM    tableName a
                    INNER JOIN tableName b
                        ON a.ID = b.ParentID
            GROUP   BY a.ID
        ) b ON a.ID = b.ID
SET     a.Children = b.Children
于 2013-08-13T06:00:35.397 回答