MySQL - 更新 X,其中 Y 最低
Posted
技术标签:
【中文标题】MySQL - 更新 X,其中 Y 最低【英文标题】:MySQL - Update X where Y is lowest 【发布时间】:2015-10-07 19:10:20 【问题描述】:我有下表:
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
我该如何解决这个问题?
【问题讨论】:
您收到该错误是因为min
是一个聚合函数,您需要一个 group by
子句才能使用聚合函数。
这是一个可能有帮助的答案***.com/a/5272523
@Jeff Burgin 是的,但更新不支持按编辑分组:好的,我会查看链接
对,我只是在解释你遇到的错误。
【参考方案1】:
如果y
是唯一的,那么你可以使用order by
和limit
:
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;
【讨论】:
【参考方案2】:您可以编写如下查询:
UPDATE TableA SET x = 1 WHERE y IN (select min(y) from TableA T2);
【讨论】:
在 mysql 中你不能引用正在更新的表。【参考方案3】:UPDATE TableA
JOIN (SELECT min(y) as min_y, FROM TableA GROUP BY y)
as temp ON temp.min_y = TableA.y
SET x = 1;
【讨论】:
以上是关于MySQL - 更新 X,其中 Y 最低的主要内容,如果未能解决你的问题,请参考以下文章
mysql如何更新一个表中的某个字段值等于另一个表的某个字段值