2017-04-07 41 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

相關問題