MySQL で You can’t specify target table ~ for update in FROM clause エラー
2007-8-19 07:00
MySQL で Update 文の中でサブクエリを使うと、You can’t specify target table ~ for update in FROM clause というエラーメッセージが出ることがあります。サブクエリの中で更新するテーブルを読んでいるような場合に発生します。たとえば
update temp_table set num = (select max(num) +1 from temp_table) where num=1; ERROR 1093 (HY000): You can't specify target table 'temp_table' for update in FROM clause
PostgreSQL や Oracle ではこのようなエラーは起きずに更新が完了します。対処方法としてはテンポラリテーブルを使うか MySQL をやめること。テンポラリテーブルも同一クエリ内では2回以上使えなかったりと制限があります。
MySQL はちょっと凝ったことをしようとすると途端にできなくなるので、本当に困ります。
usausaは、神髄はパスされた!
コメント by BlogPetのusausa — 2007-08-19 08:38