解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,原因: MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,
千家信息网最后更新 2025年01月23日解决大于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安全错误
数据库的锁怎样保障安全
吉林时代网络技术质量服务
平邑县世创软件开发工作室
计算机网络技术工艺
国内外网络安全情况
与软件开发有关专业
中文综述期刊在哪个数据库查
思科pt模拟器服务器配置
网络安全意识大学班会策划
大同软件开发联系方式
阿里云主从数据库
大唐数据网络技术有限公司
自制库存数据库
软件开发能进腾讯吗
网络安全 扫描
成都赛腾软件开发
在网上为宠物服务的软件开发
湖北电脑软件开发价格表
sql复制数据库
魔兽世界合并服务器名称
网络安全员职业资格
java调用扫描仪传输服务器端
云服务器搭建dns解析
cae仿真软件开发公司
网易版服务器最新推荐
钱汇网络技术
海淀区高科技软件开发价钱
斐讯k2 服务器
手机直播软件开发多少钱
sappcie数据库
创艺网络技术运营