mySQLを使って、同じテーブル内のデータを更新する方法について解説します。
はじめに
単純にサブクエリを用いてupdate文を作ると、次のようなエラーが出てしまいます。
クエリーのエラー(1093): You can’t specify target table ‘tableA’ for update
サブクエリーの FROM 句と更新のターゲットの両方に同じテーブルを使用することはできません。ということらしいです。
解決策
次のようなコードで、エラーをなくすことができます。
1 2 3 4 5 |
UPDATE tableA AS a1, (SELECT * FROM 社員名簿 AS a2 where (社員番号,調査年月日) IN (SELECT 社員番号, MIN_調査年月日 FROM ( SELECT 社員番号, MIN(調査年月日) AS MIN_調査年月日 FROM 社員名簿 AS a3 WHERE NAME IS NOT NULL GROUP BY 社員番号) AS a4)) AS a5 SET a1.社員名=a5.社員名 WHERE a1.社員名 IS NULL AND a1.社員番号=a5.社員番号 |
長くなりますが、こちらで更新することができます。