原文参考:MySQL错误1055 - 远里歌声_why - 博客园
MySQL5.7之后 使用groupby sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。
大致是因为
以主键为id的表为例:
SELECT count(1) FROM customer GROUP BY `name`;该SQL执行成功,因为count是聚集函数;
SELECT * FROM customer GROUP BY `name`;该SQL执行失败,因为*中包含主键id,而group by后的表达式中并没有包含id
SELECT name FROM customer GROUP BY `name`;该SQL执行成功,因为name包含在group by后的表达式中
SELECT name, contact FROM customer GROUP BY `name`;该SQL执行失败,因为contact没有包含在group by后的表达式中
使用laravel框架的过程中 新的版本直接使用group by 会导致此报错 即 selfDb.selfTable.id(主键不存在) 可以在database里面将严格模式关闭
将true 更改为false 即可在框架使用中解决
框架外的话可以这样解决
一、更改my.ini 将里面的sql_mode 的ONLY_FULL_GROUP_BY删除即可
二、使用SET来临时设置sqlmode