前提
SQLパズルという書籍のサンプルコードの模写をしていますが
サンプル通りコードを実行しようとすると“ERROR 1093 (HY000):エラ〜が発生。
実現したいこと
エラーを解消し
サンプルコードを実行できるようにしたい
発生している問題・エラーメッセージ
ERROR 1093 (HY000): You can't specify target table 'badges' for update in FROM clause
該当のソースコード
MySQL
1UPDATE Badges SET badge_status = 'A' WHERE ('I' = ALL(SELECT badge_status FROM Badges AS B1 WHERE badges.emp_id = B1.emp_id)) AND(issued_date = (SELECT MAX(issued_date) FROM Badges As B2 WHERE Badges.emp_id = B2.emp_id));
試したこと
https://poota.net/archives/786
を確認するとUPDATE対象のテーブルとサブクエリのテーブルが同一の場合
エラーが発生すると理解。
サブクエリの実行結果を別名として受け取れるようにコードにtempを追記。
UPDATE Badges SET badge_status = 'A' WHERE ('I' = ALL(SELECT badge_status FROM Badges AS B1 WHERE badges.emp_id = B1.emp_id)) AND(issued_date = (SELECT MAX(issued_date) FROM Badges As B2 WHERE Badges.emp_id = B2.emp_id)temp);
しかし、
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'temp)' at line 1
が発生

回答1件
あなたの回答
tips
プレビュー