前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql5.7在使用group by的注意事项

mysql5.7在使用group by的注意事项

作者头像
别团等shy哥发育
发布2023-02-25 16:57:39
5380
发布2023-02-25 16:57:39
举报
文章被收录于专栏:全栈开发那些事

mysql5.7在使用group by的注意事项

1、问题描述

先看一个sql语句报错:

代码语言:javascript
复制
select * from oilDaily group by wellId
在这里插入图片描述
在这里插入图片描述

这是因为在mysql5.7中开启了sql_mode中的“only_full_group_by”,而这个在执行以往版本中带有group by的语句时就会报错。

2、解决方案(一):

select查找的所有属性都必须出现在group by中 比如下面这样(这也是官网的标准写法):

代码语言:javascript
复制
select a,b from test group by a,b

3、解决方案(二)

在不需要group by的属性上面使用any_value()函数 例如:

代码语言:javascript
复制
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、本地数据库修改方案:

如果你是用的本地数据库执行以下命令即可:

代码语言:javascript
复制
 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即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mysql5.7在使用group by的注意事项
  • 1、问题描述
  • 2、解决方案(一):
  • 3、解决方案(二)
  • 4、解决方案(三)
    • 1、云数据库修改方案:
      • 2、本地数据库修改方案:
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档