使用ON DUPLICATE KEY UPDATE时出现group函数非法使用报错求助
解决MySQL中"invalid use of group function"报错问题
错误原因
报错根源是ON DUPLICATE KEY UPDATE子句里直接用了聚合函数count()——这个子句是针对单条重复记录做更新的,而聚合函数只能在分组查询阶段使用,两者上下文不兼容。
修正方案
先把分组统计的结果封装成子查询,给统计字段起别名,然后在更新时引用插入语句中已经计算好的统计值(用VALUES(字段名)方式),避免在更新阶段调用聚合函数。
修正后的SQL:
insert into Finalized_Data.Transaction_Details(Store,Ticket,SalespersonCode,ArchSupportsSold,class) select Store,Ticket,SalespersonCode,count(class) as sold_count,class FROM POS_Data_Import.auto_import_ExportPurchaseDetails as example group by store,ticket,substring(class,0,7) having class like 'ARCH SUPPORTS%' on duplicate key update ArchSupportsSold = VALUES(ArchSupportsSold);
补充说明
VALUES(ArchSupportsSold)会直接复用插入语句中select部分计算好的分组统计值,不需要重新执行聚合计算。- 请确认
Finalized_Data.Transaction_Details表已正确设置唯一键(比如Store+Ticket+class组合唯一键),这是ON DUPLICATE KEY UPDATE生效的必要前提。
内容的提问来源于stack exchange,提问作者jbigs89
相关产品推荐
相关产品推荐

