2017-04-07 16 views
0

organization_memberというジャンクションテーブルを介してユーザーと組織の間に多対多の関係を作成する新しい移行があります。 userテーブルのorganization_iduser_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