赞
踩
执行sql语句报错:
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘test.fruits.f_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
(错误1055(42000):选择列表的表达式1不在GROUP BY子句中,并且包含未聚合的列“test.fruits.f_id”,它在功能上不依赖GROUP BY子句中的列;这与SQL_mode=only_full_group_by不兼容)
是由于默认的 MySQL 配置中 sql_mode 配置了 only_full_group,需要 GROUP BY 中包含所有 在 SELECT 中出现的字段。
only_full_group_by说明:
only_full_group_by :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好
MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)
因此需要在 MySQL 的配置中去掉这个配置。
解决办法:
在mysql中输入
mysql> set sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
复制执行时,注意引号是否正确
再次从新查询就OK了!
转载于https://www.cnblogs.com/jjking/p/11494268.html
和 https://blog.csdn.net/loveliness_peri/article/details/88051316
如有侵权,请联删
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。