使用group by仅更新具有最大值的记录

时间:2014-02-24 20:02:09

标签: mysql group-by max having-clause

我有一些数据,无论server_id,product_id和polled_at日期匹配,我想将updated_by设置为2(仅搜索更新者的行已经是1)。我一直在弄乱我的代码,但无法弄明白。请帮我。这就是我所拥有的。

http://sqlfiddle.com/#!2/ebd112/1

前2行不应该更新,只有server_id,product_id和polled_at匹配的所有其他行之间的最大峰值应更新为updated_by = 2

由于

1 个答案:

答案 0 :(得分:0)

您需要在查询中添加HAVING子句。这是更新的小提琴: http://sqlfiddle.com/#!2/9e3a9/1

基本上,我没有按照您最初的做法对其进行排序,而是将ORDER BY更改为HAVING子句:

HAVING licenses_peak = (SELECT Max(licenses_peak) FROM hpolls WHERE updated_by=1)

这将导致查询仅包含该分组具有最大licenses_peak值的项目。