Mysql升级到5.7后遇到的group by查询问题解决

发布时间 - 2026-01-11 03:14:13    点击率:

发现问题

最近在将mysql升级到mysql 5.7后,进行一些group by 查询时,比如下面的

SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20

就会报如下错误:

SELECT list is not in GROUP BY clause and contains nonaggregated column ‘news.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.

原因分析

原因是mysql 5.7 模式中。默认启用了ONLY_FULL_GROUP_BY。

ONLY_FULL_GROUP_BY是MySQL提供的一个sql_mode,通过这个sql_mode来提供SQL语句GROUP BY合法性的检查。

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

this is incompatible with sql_mode=only_full_group_by这句话提示了这违背了mysql的规则,only fully group by,也就是说在执行的时候先分组,根据查询的字段(select的字段)在分组的内容中取出,所以查询的字段全部都应该在group by分组条件内;一种情况例外,查询字段中如果含有聚合函数的字段不用包含在group by中,就像我上面的count(id)。

后来发现Order by排序条件的字段也必须要在group by内,排序的字段也是从分组的字段中取出。 不明白的可以去看一下。

解决办法:

1.set@@sql_mode='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即可正常执行sql.

2. 不去ONLY_FULL_GROUP_BY, 时 select字段必须都在group by分组条件内(含有函数的字段除外)。(如果遇到order by也出现这个问题,同理,order by字段也都要在group by内)。

3.利用ANY_VALUE()这个函数 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value

This function is useful for GROUP BY queries when the ONLY_FULL_GROUP_BY SQL mode is enabled, for cases when MySQL rejects a query that you know is valid for reasons that MySQL cannot determine. The function return value and type are the same as the return value and type of its argument, but the function result is not checked for the ONLY_FULL_GROUP_BY SQL mode.

如上面的sql语句可写成

SELECT ANY_VALUE(id)as id,ANY_VALUE(uid) as uid ,ANY_VALUE(username) as username,ANY_VALUE(title) as title,ANY_VALUE(author) as author,ANY_VALUE(thumb) as thumb,ANY_VALUE(description) as description,ANY_VALUE(content) as content,ANY_VALUE(linkurl) as linkurl,ANY_VALUE(url) as url,ANY_VALUE(group_id) as group_id,ANY_VALUE(inputtime) as inputtime, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY ANY_VALUE(inputtime) DESC LIMIT 20

我选用的是第3种方法。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


# mysql  # 5.7  # group  # by  # mysql查询group  # MySQL5.7 group by新特性报错1055的解决办法  # MYSQL GROUP BY用法详解  # mysql5.7同时使用group by和order by报错问题  # 要在  # 会报  # 的是  # 都在  # 这个问题  # 是从  # 不去  # 有一定  # 不明白  # 这句话  # 去看  # 也都  # 升级到  # 种方法  # 这篇文章  # 谢谢大家  # 解决办法  # 也就是说  # 就像我  # 有疑问 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: ,网页ppt怎么弄成自己的ppt?  ,在苏州找工作,上哪个网站比较好?  nodejs redis 发布订阅机制封装实现方法及实例代码  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Linux后台任务运行方法_nohup与&使用技巧【技巧】  香港服务器如何优化才能显著提升网站加载速度?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  香港服务器租用每月最低只需15元?  IOS倒计时设置UIButton标题title的抖动问题  Linux系统运维自动化项目教程_Ansible批量管理实战  HTML 中动态设置元素 name 属性的正确语法详解  香港服务器建站指南:免备案优势与SEO优化技巧全解析  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Python文件操作最佳实践_稳定性说明【指导】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何在建站之星网店版论坛获取技术支持?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  简单实现Android文件上传  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  canvas 画布在主流浏览器中的尺寸限制详细介绍  jquery插件bootstrapValidator表单验证详解  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何获取PHP WAP自助建站系统源码?  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何用VPS主机快速搭建个人网站?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  网页设计与网站制作内容,怎样注册网站?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何在橙子建站中快速调整背景颜色?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  如何用PHP工具快速搭建高效网站?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何自定义建站之星网站的导航菜单样式?