2017-04-07 46 views
0

我有一个新的迁移,通过名为organization_member的联结表创建用户和组织之间的多对多关系。由于我试图将和user_id的当前值迁移到联结表以表示这种关系,因此我想我会尝试联接和更新,但我似乎无法弄清楚如何同时查询表格,然后取user上的现有列并更新关系目前不存在的位置。这是我最初的想法:SQL - 根据用户表中的值更新联结表

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 

任何帮助将是巨大的!

回答

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,所以你需要一个匹配的行更新

+0

谢谢你的收获。正确的修复! – cphill

相关问题