2016-11-20 17 views
0

TableAの値をTableBの値で更新し、一意のidフィールドと一致させ、WHERE条件を追加しようとしています。 ウェブを検索し、以下のコードを見つけました。何らかの理由で、MYSQLは構文エラーがあると述べています。MYSQL:INNER JOIN構文エラーからの更新

UPDATE 
    TableA 
SET 
    TableA.field1 = TableB.field1 
FROM 
    TableA 
INNER JOIN 
    TableB 
ON 
    TableA.id = TableB.id 
WHERE 
    TableA.field1 <> '' 
LIMIT 100; 

答えて

1

MySQLでの正しい構文は次のとおりです。注意点としては

UPDATE TableA INNER JOIN 
     TableB 
     ON TableA.id = TableB.id 
    SET TableA.field1 = TableB.field1 
WHERE TableA.field1 <> ''; 

:あなたはJOINLIMITを使用することはできません。

あなたがLIMITを使用したい場合は、あなたが行うことができます:あなたはマッチがTableBに常にある知っていれば

UPDATE TableA 
    SET TableA.field1 = (SELECT TableB.field1 FROM TableB WHERE TableA.id = TableB.id) 
    WHERE TableA.field1 <> '' AND 
      EXISTS (SELECT 1 FROM TableB WHERE TableA.id = TableB.id) 
    LIMIT 100; 

は(あなたはEXISTS表現を残すことができますより多くの場合は、サブクエリにLIMIT 1を追加することができます。 1つ以上の試合が可能です)

ORDER BYLIMITを常に使用することをお勧めします。これにより、どの行が更新されているかを制御できます。