アプリ版:「スタンプのみでお礼する」機能のリリースについて

customerテーブル内のprice列の最大値を持つレコードを削除したいのですが、上手くいきません。よろしくお願いします。

DELETE FROM
customer
WHERE
`price` =
(
SELECT
max( `price` )
FROM customer
) ;

エラーメッセージは
#1093 - You can't specify target table 'customer' for update in FROM clause
と出ます。これは、同じテーブルを参照しているためのエラーのようです。

MySQLのバージョンは、5.0.48です。

A 回答 (2件)

MySQLの機構そのものは、自分を参照しても、特に問題は起こさないんです。

多分、構文的なチェックで引っ掛けているんでしょうね。

MySQLをだましてやります。

CREATE VIEW maxPriceView AS SELECT MAX(price) AS maxPrice FROM customer;

DELETE FROM customer WHERE price = (SELECT maxPrice FROM maxPriceView);

実際には、自分自身を参照しているんですが、消えます。
    • good
    • 0
この回答へのお礼

ありがとうございました。大変参考になります。

DELETE FROM customer ORDER BY price DESC LIMIT 1;

でも行くようです。でも、最大と最小以外では使えませんね。

お礼日時:2008/12/04 19:07

一回テンポラリに落としてからやってみては?

    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2008/12/04 19:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!