MySQL/SELECT 結果を用いて UPDATE する

MySQL/SELECT 結果を用いて UPDATE する

MySQL5.0

別テーブルの値を使ってデータの一部の値を洗い替えたい

タイトルはSELECT結果でUPDATEだががMySQLではそれができない でも「SELECT結果でUPDATE」したい場合って、別テーブルの値を使ってデータの一部の一括して値を洗い替えたい状況がほとんどだと思うので・・・

MySQLのUPDATE構文はそういうことができるようになっている。簡単に言うとデータソースが2つある半分SELECT構文のようなUPDATE文が書ける

UPDATE A, B
SET A.name = B.name
WHERE A.id = B.id

こんな感じ。 これだとテーブルA上のレコードとB上のレコードでidが合致するものnameをBの値で書き換えるということになる。

解釈順番とか考えるとこんがらがってくるが集合として考えると・・・まぁ納得できるかな。

Oracleとかはupdateでもselectによる副問い合わせができるっぽいけどね。

Tag

db/mysql/update_using_the_select_result.txt · 最終更新: 2018-03-13 09:55 by ore