MySQL - 在 Y 最低的地方更新 X

标签 mysql sql database

我有下表:

       TableA
  x               y
----------------------
 3                1
 2                5
 5                2

现在我想更新 x 列中的值,其中 y 列中的值最低,类似这样:

UPDATE TableA SET x = 1 WHERE y = min(y);

那么第一行应该是 x = 1 和 y = 1。

但我收到以下错误代码:

Error Code: 1111. Invalid use of group function

我该如何解决?

最佳答案

如果y 是唯一的,那么您可以使用order bylimit:

UPDATE TableA
    SET x = 1 
    ORDER BY Y ASC
    LIMIT 1;

如果你有多个具有最小值的行,你可以使用join:

UPDATE TableA a JOIN
       (SELECT MIN(Y) as miny FROM TableA) m
       ON a.y = m.miny
    SET x = 1;

关于MySQL - 在 Y 最低的地方更新 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000517/

相关文章:

php - 我可以在没有 paypal 重定向到成功页面的情况下更新数据库吗?

php - SQL 数据透视表与 dayValue [处理数据透视表中的日期] MYSQL-解决方案

mysql - 在哪种数据库软件/语言中,我们可以拥有一个可供多个用户访问的数据库,除了它的两列只能由管理员用户访问之外

php - 如何在 Android 应用程序中连接 wamp 服务器数据库并检索数据?

java - 没有本地数据库的 TDD?

PHP5/MYSQL - IF value1 = value2 然后死,否则执行代码

php - 为什么我的代码没有将详细信息插入数据库?

mysql - 使用带有多个 WHERE 子句的 LEFT JOIN 优化查询

mysql - 查找字符串中最后一个单词的 SQL 语句

sql - Oracle中如何做到top 1?