我从这样的查询开始:
insert into summary ( col1, col2, Total )
select col1, col2, count(col4) as total from importdata
where col1 = 'abc' and col4 in ('1A', '2A')
group by col1, col2
order by col1, col2
而且我还无法确定如何正确使用“重复”子句。我认为我需要的条款是
on duplicate key update total=count(col4)
我已将其放置在查询中的最后一行以及 where 子句之后的行,但是两者都生成了错误。我的条款正确吗?它需要去哪里?
(最坏的情况我可以使用“插入忽略”,但我认为更新会更好。)
最佳答案
您不能在 ON DUPLICATE KEY UPDATE
子句中使用 COUNT
或其他组函数。你可以这样做:
INSERT INTO summary ( col1, col2, Total )
SELECT col1, col2, count(col4)
FROM importdata
WHERE col1 = 'abc' AND col4 IN ('1A', '2A')
GROUP BY col1, col2
ORDER BY col1, col2
ON DUPLICATE KEY UPDATE Total = VALUES(Total)
这意味着,如果存在重复键,只需将列 total
设置为您在 Total
中插入的值,而不是插入新行。请注意,我删除了 as Total
——这会导致问题,因为您已经有一个名为 Total
的列,并且名称不区分大小写。
关于mysql - 添加 "on duplicate key update"子句以插入到查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819520/