UPDATE文でInnerJoin

SE歴ももうすぐ10年だというのに、こんな基本的なことも知らなかった。。。
まあ数年ブランクがあるからという言い訳をしておこう。

で、タイトルの件だが、
Updateする時に、

UPDATE
table1
INNER JOIN
table2
ON
table1.id = table2.id
SET
table1.cellname1 = table2.cellname2

みたいに書けるってこと。

今までは、僕は

UPDATE
table1
SET
table1.cellname1 =
(
SELECT
MAX(table2.cellname2)
FROM
table2
WHERE
table1.id = table2.id
)

みたいに書いてた。
後者だと、table1の1レコード毎にtable2を全レコード読みに行くので、
おそらく前者の方がパフォーマンス的には圧倒的に良いんだろう。
検証してないけど。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください