解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,原因: MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,
千家信息网最后更新 2024年11月29日解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
原因:
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参考手册。)
执行以下个命令,可以查看 sql_mode 的内容:
mysql> SHOW SESSION VARIABLES;mysql> SHOW GLOBAL VARIABLES;mysql> select @@sql_mode;
可见session和global 的sql_mode的值都为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
only_full_group_by说明:
only_full_group_by :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好
解决:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
总结
以上所述是小编给大家介绍的解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
功能
情况
帮助
查询
检测
版本
分组
差不多
个人
内容
出处
原因
命令
就是
感觉
手册
是在
条件
模式
疑问
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
access作业 数据库
文职网络技术
去日本学习网络技术
考研数据库试题及答案
达梦数据库如何查看字段注释
怀旧服新开服务器公告
软件开发需要哪些认证
下列关于网络安全说法正确
网络安全教育主题内容4条
怎么配置传奇云服务器
网络安全三个基本属性是什么
网络安全模式看电影
常州vb软件开发
卫生监督所网络安全应急预案
软件开发中日志怎么设置
网络加密技术网络安全论文
数据库骚操作mongodb
象过河 数据库 密码
惠普服务器怎么了
天津品质软件开发检测中心
租赁服务器数据安全
求生之路第三方服务器怎么创建
服务器小游戏下载
用于维护网络安全的需要
速达财务软件开发商
联想小米备份服务器
智慧园区服务器及存储系统
网络安全合规心得
山西煤矿网络安全等保测评
您的网络安全状态