MySQL |更新查询以填充子项

时间:2013-08-13 05:53:22

标签: mysql sql database join sql-update

我有一张像

这样的表格
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为1的子项为2,3为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查询执行此操作?

1 个答案:

答案 0 :(得分: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