更新具有一个字段的当前最高(最大)值的行

Nek*_*eka 2 mysql sql

我有这个SQL查询,这是错误的.我想更新wins表中的字段"prevmonth",但仅限于具有字段"month_wins"的最大值的记录.

UPDATE wins 
SET prevmonth_top=1 
WHERE month_wins = (SELECT MAX(month_wins) FROM wins)
Run Code Online (Sandbox Code Playgroud)

但我怎么能这样做?

Joh*_*Woo 16

尝试这个技巧,

UPDATE wins
SET prevmonth_top=1 
ORDER BY month_wins DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

或类似的东西,

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

SAME AS 您无法在FROM子句中为更新指定目标表'table_name'

  • FWIW:第一个解决方案很好而且很短,但要非常小心不要在最后省略“Limit 1”! (2认同)

Aka*_* KC 5

运行以下查询,它可能会有所帮助:

UPDATE wins 
SET prevmonth_top=1  WHERE month_wins = 
(
      SELECT month_wins FROM (SELECT MAX(month_wins) FROM wins) AS month_wins
) 
Run Code Online (Sandbox Code Playgroud)