5

私はこのSQLクエリを持っていますが、これは間違っています。winsテーブルのフィールド「prevmonth」を更新したいのですが、フィールド「month_wins」の最大値を持つレコードに対してのみです。

UPDATE wins 
SET prevmonth_top=1 
WHERE month_wins = (SELECT MAX(month_wins) FROM wins)

しかし、どうすればこれを行うことができますか?

4

2 に答える 2

19

このトリックを試してみてください。

UPDATE wins
SET prevmonth_top=1 
ORDER BY month_wins DESC
LIMIT 1

またはこのようなもの、

UPDATE IGNORE giveaways 
SET winner = 1 
WHERE month_wins = (select maxID from (SELECT MAX(ID) maxID FROM giveaways) as t)

SAME AS FROM 句で更新対象のテーブル 'table_name' を指定することはできません

于 2012-09-03T05:39:39.660 に答える
5

次のクエリを実行すると、役立つ場合があります。

UPDATE wins 
SET prevmonth_top=1  WHERE month_wins = 
(
      SELECT month_wins FROM (SELECT MAX(month_wins) FROM wins) AS month_wins
) 
于 2012-09-03T05:43:27.703 に答える