【mySQL】直近のデータで値を更新する

SQLと書かれたタイトル SQL

mySQLを使って、同じテーブル内のデータを更新する方法について解説します。

はじめに

単純にサブクエリを用いてupdate文を作ると、次のようなエラーが出てしまいます。

クエリーのエラー(1093): You can’t specify target table ‘tableA’ for update

サブクエリーの FROM 句と更新のターゲットの両方に同じテーブルを使用することはできません。ということらしいです。

解決策

次のようなコードで、エラーをなくすことができます。

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.社員番号

長くなりますが、こちらで更新することができます。

タイトルとURLをコピーしました