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

标签 mysql sql

<分区>

我有这个错误的 SQL 查询。我想更新 wins 表中的字段“prevmonth”,但只针对字段“month_wins”具有最大值的记录。

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

错误信息:

#1093 - You can't specify target table 'wins' for update in FROM clause

但是我该怎么做呢?

最佳答案

试试这个技巧:

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)

You can't specify target table 'table_name' for update in FROM clause .

关于mysql - 更新具有一个字段的当前最高(最大)值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242466/

相关文章:

mysql - 如何正确更新 mysql 字段为 NULL?

mysql - 在mysql中的单个查询中更新多个表

SQL 字符串太长

c# - 在表单中输入的数据不会插入到数据表中

mysql - 如何进行 GROUP BY 然后 LEFT JOIN?

php - 无法在另一个函数内使用在函数中声明的变量

mysql - 如何在 Amazon RDS 上为 MySQL 禁用 innodb_doublewrite?

php - 使用范围和关系计算两行 (Laravel)

SQL 查询城市名称以元音开头和结尾

mysql - 我应该如何构建这个 MySQL 查询?