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即可。

posted @ 2021-04-02 22:25  别团等shy哥发育  阅读(66)  评论(0)    收藏  举报