MYSQL查询更新与用户表的ManagerID相关的分支表的父ID的层次结构

时间:2017-01-06 00:39:19

标签: mysql

我的用户和分支表包含以下数据

     **users table**
    id    ManagerID
    1      3
    2      1
    3      5
    4      null
    5       4

    **Branch Table**
    id  parent_ID related_user_id 
    100               4
    200               3
    300               5   
    400               1

** parent_ID是分支表中id(分支表)的引用。 ManagerID是用户表中id(users表)的父级。 id 4有空ManagerID表示没有父。

现在所有的ManagerID都已在分支表中可用,它们基本上是用户表的id,现在我需要从id更新父ID 分支表。 从上面的例子可以看出,id 1的ManagerID在用户表中是3,而id 3可用作对应于Manager表中id 200的related_user_id。 所以id 1的父ID应该是200。 我需要在单个查询中从上面的信息更新,结果应该是

    **Branch Table**
    id  parent_ID related_user_id 
    100    null       4
    200    300        3
    300    100        5   
    400    200        1

请给我解决方案......

1 个答案:

答案 0 :(得分:0)

这应该做你想要的:

UPDATE Branch b1
  JOIN users u ON u.id = b1.related_user_id
  LEFT JOIN Branch b2 ON b2.related_user_id = u.ManagerID
   SET b1.parent_ID = b2.id;

SQL Fiddle