orz.conf

技術メモ✍

mysqlでエラー

You can't specify target table 'x' for update in FROM clause
こんなエラーが出て困りました。
意味はテーブル'x'をFROM句に入れてアップデートのために明示することは出来ません。
つまりfrom句にテーブル'x'を記載しないで下さいという感じでしょうか。
clauseが句なんですね。

TABLE1にはNOというカラムが存在し、
その最大値のレコードを削除しようとしました。

DELETE FROM
  TABLE1
WHERE
  NO = (
    SELECT
      MAX(NO)
    WHERE
      TABLE1
    );

mysqlだと削除するテーブルとサブクエリのテーブルが同じだと
怒られてしまうようです。

DELETE FROM
  TABLE1
ORDER BY
  NO DESC
LIMIT
  1;

とか回避策を使うしか無いようです。

頻繁に使う条件ならfunction化するのも良いのかな。