UPDATE 文 で 自己相関型サブクエリを使う ひとつの方法


MySQL のマニュアルに下記の記述があります
「サブクエリは SELECT ステートメントと同じく、UPDATE ステートメントや DELETE ステートメントでも正式に使用できるので、UPDATE ステートメント内の割り当てにサブクエリを使用しても問題ありません。 しかし、サブクエリの FROM 節と更新対象の両方に同じテーブル(この場合、テーブル t1)を使用することはできません。


UPDATE 文や DELETE 文のサブクエリには
更新対象のテーブルは指定できないとのことですね。
実際、これをやるとエラーになります。


以下はこれを回避するひとつの方法です。
外部結合を使います。

UPDATE MAIN 
LEFT OUTER JOIN SUB ON MAIN.DATE = SUB.DATE
SET MAIN.VAL = SUB.VAL


ではでは