专栏首页授客的专栏MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题

MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题

排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题

By:授客 QQ:1033553122

测试环境

win10

MySQL 5.7

问题描述:

执行类似以下mysql查询,

SELECT id, name, count(*) AS cnt FROM case_table GROUP BY name

报错,如下:

服务器内部错误 (1055, "Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'case_table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")

原因:存在非聚合列 id ,没有包含在GROUP BY子句中。

但是本例中,其它地方需要用到这个id列,不能去掉,那咋办呢?如下

解决方法

方法1

查询全局sql_mode

SELECT @@GLOBAL.sql_mode;

或者

SELECT @@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';
SET SESSION

复制查询结果,然后设置GLOBAL sql_mode,SESSION sql_model为查询结果去掉 “ONLY_FULL_GROUP_BY,”的值,如下:

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';

注意:该方法仅用于临时修改,重启mysql后,以上设置失效。

方法2

启动mysql时,增加sql_model选项,如下:

mysqld --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" [...其它选项]

方法3:

linux服务下,修改my.conf (Windows下修改my.ini),在[mysqld]节点下,最末尾添加sql_mode配置,如下:

...

[mysqld]

...

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[其它节点配置]

...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • loadrunner 脚本优化-集合点设置

    当一个集合点被插入,VuGen往Vuser脚本中插入一个lr_rendezvous函数,形如:

    授客
  • 排错-SP2-1503:无法初始化Oracle调用界面解决

    找到Oracle安装目录中BIN目录下sqlplus.exe。右键>>属性>>兼容性>>选中以管理员身份运行>>确认即可

    授客
  • Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍

    GROUP_CONCAT([DISTINCT] column_name [ORDER BY 序字段 ASC/DESC] [SEPARATOR '分隔符']...

    授客
  • Java中ONLY_FULL_GROUP_BY错误

    将数据从旧的数据库(MySQL5.1)迁移到新的数据库(MySQL5.7)中时,查询语句不变的情况下,报如下错;

    村雨遥
  • 内容量大增,“老司机”层出,如何用技术代替鉴黄师?

    “宅家抗疫”的背景下, 在线内容需求量大增, 同时也带来了很多安全挑战。 从文字到图片、从直播到短视频, 各路“老司机”打擦边球的手段层出不穷。 如何加强内容...

    腾讯大讲堂
  • 「首席架构师推荐」工作流引擎哪家强?首席架构帮你挑

    原文:https://github.com/meirwah/awesome-workflow-engines

    首席架构师智库
  • Excel公式技巧15: 探讨强制返回数组的公式技术

    有时候,我们希望将公式应用于一组值而不是一个值,这可以简单地将公式作为数组公式(按Ctrl+Shift+Enter键)来实现。然而,并不是所有公式都能如此轻松地...

    fanjy
  • SEO杂谈(3)

    在搜索结果中,除了title,类description,url,可能出现的图片,以及排名。还有哪个元素可以供用户判断我要点击哪个结果?请仔细观察。 

    RP道貌不岸然
  • LaCie 2big Dock Thunderbolt 3发布了

    近日,全球领先的存储解决方案提供商希捷科技公司(NASDAQ:STX)旗下的高端品牌LaCie今天在北京举办“LaCie,畅想创作之美”智慧媒体存储解决方案暨新...

    挖掘大数据
  • 弹性文件服务与云硬盘一样吗?

    在公有云上,有很多的存储产品,让我们眼花缭乱,今天我们来看下弹性文件服务SFS。初一看,与我们在私有云经常使用的NAS有些神似,又与公有云上的云硬盘有些类似。只...

    希望的田野

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动