mysql5.7在使用group by的注意事项
mysql5.7在使用group by的注意事项
1、问题描述
先看一个sql语句报错:
select * from oilDaily group by wellId
这是因为在mysql5.7中开启了sql_mode中的“only_full_group_by”,而这个在执行以往版本中带有group by的语句时就会报错。
2、解决方案(一):
select查找的所有属性都必须出现在group by中
比如下面这样(这也是官网的标准写法):
select a,b from test group by a,b
3、解决方案(二)
在不需要group by的属性上面使用any_value()
函数
例如:
select any_value(oilId),wellId from oilDaily group by wellId
4、解决方案(三)
我们直接删除sql_mode中的only_full_group_by
我用的mysql云数据库,修改方式如下:
1、云数据库修改方案:
点击管理
点击参数设置
找到sql_mode选项
去掉ONLY_FULL_GROUP_BY的勾选。
之后重启下云数据库就行
2、本地数据库修改方案:
如果你是用的本地数据库执行以下命令即可:
set @@global.sqlmode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
你设置上面的值最好用select @@global.sqlmode
查一下,再将ONLY_FULL_GROUP_BY去掉,将剩下的赋值给sqlmode即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-04-02 Servlet学习笔记6(request请求对象、response响应对象2)