SQL - 基于用户表中的值更新连接表

时间:2017-04-07 11:22:42

标签: mysql sql

我有一个新的迁移,通过名为organization_member的联结表在用户和组织之间创建多对多关系。由于我尝试将organization_id表上的user_iduser的当前值迁移到联结表来表示这种关系,我想我会尝试加入和更新,但是我似乎无法弄清楚如何查询两个表,然后获取user上的现有列并更新当前不存在关系的位置。这是我最初的想法:

UPDATE `om`
SET `om`.`user_id` = `u`.`user_id`, `om`.`organization_id` = `u`.`organization_id`
FROM `user` AS `u`
LEFT JOIN `organization_member` AS `om`
ON `u`.`user_id` = `om`.`user_id`
WHERE `u`.`organization_id` IS NOT NULL;

但我在

收到错误
'FROM `user` AS `u`
LEFT JOIN `organization_member` AS `om`
ON `u`.`user_id` = `o' at line 3

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

在MySQL中,JOINUPDATE的一部分。没有单独的FROM

UPDATE `user` `u` JOIN
       `organization_member` `om`
       ON `u`.`user_id` = `om`.`user_id`
    SET `om`.`user_id` = `u`.`user_id`,
        `om`.`organization_id` = `u`.`organization_id`
    WHERE `u`.`organization_id` IS NOT NULL;

LEFT JOIN也不合适。您想要更新om,因此您需要一个匹配的行进行更新