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 はちょっと凝ったことをしようとすると途端にできなくなるので、本当に困ります。

1件のコメント

  1. usausaは、神髄はパスされた!

    Comment by BlogPetのusausa2007-08-19 08:38

Sorry, the comment form is closed at this time.

70 queries. HTML convert time: 1.210 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン