如何使用group by创建UPDATE语句?

时间:2014-02-19 22:35:53

标签: mysql group-by sql-update

我有以下更新查询无效,需要帮助才能使此更新生效。任何帮助表示赞赏。

update polls 
   set updated_by=2 
where updated_by=1 
group by poll_date, server_id, product_id;

2 个答案:

答案 0 :(得分:1)

您不能,因为GROUP BY用于更改结果集的显示方式。 UPDATE没有输出,因此没有任何内容可以分组。

结帐https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

答案 1 :(得分:0)

假设表中存在唯一ID(主键),此查询可将重复项标记为2

UPDATE polls p1
JOIN
( SELECT id
  FROM polls p1
  WHERE EXISTS (
    SELECT 1 FROM polls p2
    WHERE p1.poll_date = p2.poll_date
      AND p1.server_id = p2.server_id
      AND p1.product_id = p2.product_id
      AND p2.id < p1.id
  )
) p2
 ON p1.id = p2.id
SET p1.updated_by = 2
WHERE p1.updated_by = 1

演示:http://sqlfiddle.com/#!2/9b83b/1