1

別のMySQLテーブルからMySQLテーブルに行を挿入するのは簡単です。

INSERT INTO sometable (SELECT * FROM anothertable WHERE somefield='somevalue')

しかし、挿入する代わりに更新したい場合はどうすればよいですか?似たようなものを探しています

UPDATE sometable SET (SELECT * FROM anothertable WHERE somefield='somevalue')

明らかに、これは機能しません。(sometableとanothertableの構造は同じです)。

4

2 に答える 2

3

両方のテーブルを結合できます。次のようにしてみてください

UPDATE sometable a
       INNER JOIN anotherTable b
           ON a.colname = b.colName
SET    a.val = b.val,
       a.val2 = b.val2
WHERE  b.somefield='somevalue'
于 2012-11-02T15:08:02.530 に答える
2

主キーの一致に特に基づいて行を更新しようとしている場合はREPLACE、INSERTの代わりに使用できます。

REPLACE INTO sometable SELECT * FROM anothertable WHERE somefield='somevalue';

これは、fromの主キー列がの主キー列anothertableと同じ値である場合sometable、SELECTによって返される他のすべての列が、のそれらの列を上書きするために使用されることを意味しますsometable

http://dev.mysql.com/doc/refman/5.5/en/replace.htmlを参照してください

行の照合が主キー以外のものに基づいている場合は、@JohnWooが示したようにマルチテーブルのUPDATE構文を使用する必要があります。

于 2012-11-02T15:11:57.243 に答える