MySQL查询统计报错this is incompatible with sql_mode=only_full_group_by

这篇博客讨论了一个在MySQL 5.7中遇到的SQL查询异常,由于ONLY_FULL_GROUP_BY模式导致查询失败。问题在于SELECT列表中包含了未在GROUP BY子句中出现的非聚合列。解决方案是升级MySQL版本或者修改SQL语句,确保所有非聚合列都在GROUP BY子句中。提供了一个修正后的SQL实例作为参考。
摘要由CSDN通过智能技术生成

1.问题描述

sql查询统计异常

SELECT 	t.username,
		t.police_no,
		SUM(t.totalflytime) AS totalTime
	
FROM trackname t
WHERE t.delete_state = 1 AND t.police_no IS NOT NULL
GROUP BY t.police_no

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'feidun.t.username' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

2.分析原因

字面意思理解是sql_model=only_full_group_by限制了,导致在以往MYSQL版本中能正常查询的SQL,在5.7不能用了
参考文档:
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-setting
文档指出:ONLY_FULL_GROUP_BY的设定,将不允许查询字段包括非聚集列

3.解决办法

(1)升级mysql版本
(2)在group by补全你要查询的非聚集列,也就是如果select查询的列[非函数],都应该在group by后,否则就会报错
sql正确实例:

SELECT 	t.username,
		t.police_no,
		SUM(t.totalflytime) AS totalTime
	
FROM 	test t
WHERE t.delete_state = 1 AND t.police_no IS NOT NULL
GROUP BY t.police_no,t.username
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕木兮人可

感谢支持,勿忘初心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值