web-dev-qa-db-ja.com

MySQL-サブクエリに基づいて値を更新する

table1から返されるselectがあるとします。

ID  Name
 1  Bob
 2  Alice
 3  Joe

次に、この結果に基づいて別のテーブルにUPDATE値が必要です。

UPDATE table2 SET Name = table1.Name WHERE ID = table1.ID

私が理解したように、私は1つの場所でのみ内部選択を行うことができます:

UPDATE table2 SET Name = (select Name from table1) WHERE ...

そして、WHERE条件の指定方法がわかりません。

22
MasterClass

このようにテーブルを結合するだけです。

UPDATE table2 t2
JOIN table1 t1 ON t1.id = t2.id
SET t2.name = t1.name;

JOIN の結果

selectで実行するように設定されている場合は、次のように実行できます。

UPDATE table2 t2,
(   SELECT Name, id 
    FROM table1 
) t1
SET t2.name = t1.name
WHERE t1.id = t2.id

SELECTからの結果

60
John Ruddell
 UPDATE table2
 SET name = (SELECT table1.Name FROM table1 WHERE table1.id = table2.id)
 WHERE apply_condition

編集:#1

   UPDATE table2 t2, (SELECT id, name FROM table1) t1 SET t2.name = t1.name WHERE t1.id = t2.id

これをお読みください linkanother

13
Rajib Ghosh