【MySQL】 join したテーブルをUPDATE(更新)する。【仕様?不可能?】
SQLの記述をみて、技術者の差がでやすい inner join やleft join構文ですが、(もうねー、サブクエリは、なるべくjoinで回避して、サブクエリ使わないでください。といいたい。)
これにからめてUPDATEはできるのでしょうか?
これらの構文がパットと思い浮かぶ方は、あらすごい!
出来ない方は、今日ここで覚えておきましょう。
まず、できるか否かですが、できますん。
(1)通常のUPDATE構文
UPDATE tableA SET A.col1 = "hoge" WHERE A.col1 = "pugya";
(2)INNER JOIN を絡めたUPDATE構文
UPDATE tabelA
inner join tableB on TABLEA.col2=TABLE.col2
SET A.col1="hoge"
WHERE A.col1 = "pugya" and tableB.col3="dogya";
(3)LEFT JOIN を絡めたUPDATE構文
UPDATE tabelA
left join tableB on TABLEA.col2=TABLE.col2
SET A.col1="hoge"
WHERE A.col1 = "pugya" and tableB.col3="dogya";
これらを知っとくと、ソースを経由しなくてもいいので、100行程度のSELECT~更新ソースを1本のSQLで賄う事が可能になりますので、覚えておきましょう。
あと、joinはSQL技術者なら使いこなしましょう。サブクエリで数時間かかるSQLが数秒で終わるとかは、結構あるものです。
