我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

解决MySQL5.7版本之后使用GROUP BY语句时报错

今天使用mysql简单的一句分组查询语句(GROUP BY)报错了。

mysql> SELECT * FROM tb GROUP BY empid;
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db1.tb.sales' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

查了问题原因和解决方法,成功解决。

问题原因

原因:

  • 使用GROUP BY 语句违背了sql_mode=only_full_group_by。
  • 因为mysql版本5.7之后默认的模式是ONLY_FULL_GROUP_BY。

官网文档的原话:

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

说人话,大概意思就是说(使用google翻译):

拒绝选择列表、HAVING 条件或 ORDER BY 列表引用非聚合列的查询,这些列既不在 GROUP BY 子句中命名,也不在功能上依赖于(唯一确定的)GROUP BY 列。

从 MySQL 5.7.5 开始,默认 SQL 模式包括 ONLY_FULL_GROUP_BY。(在 5.7.5 之前,MySQL 不检测函数依赖,并且默认不启用 ONLY_FULL_GROUP_BY。有关 5.7.5 之前的行为的描述,请参阅 MySQL 5.6 参考手册。)

标准 SQL 的 MySQL 扩展允许在 HAVING 子句中引用选择列表中的别名表达式。 在 MySQL 5.7.5 之前,启用 ONLY_FULL_GROUP_BY 会禁用此扩展,因此需要使用非别名表达式编写 HAVING 子句。 从 MySQL 5.7.5 开始,此限制被取消,因此 HAVING 子句可以引用别名,无论是否启用了 ONLY_FULL_GROUP_BY。

解决方法

1、先使用SQL查询sql_mode

select @@global.sql_mode

2、重新设置sql_mode,删除ONLY_FULL_GROUP_BY

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

3、退出重进


# 退出
quit
# 再次登录(命令行模式)
mysql -u root -p

再次执行查询语句,

SELECT * FROM tb GROUP BY empid;

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.lsjlt.com)。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

目录解决mysql5.7版本之后使用GROUP BY编程网语句时报错问题原因解决方法总结解决MySQL5.7版本之后使用GROUP BY语句时报错今天使用mysql简单的一句分组查询语句(GROUP BY)报错了。mysql> SELE
MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
2024-09-04

MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”如何解决

本文小编为大家详细介绍“MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”如何解决”,内容详细,步骤清晰,细节处理
2023-07-02

MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法

目录项目场景:问题描述原因分析:解决方案:总结项目场景:最近在部署项目之后,运行出现报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonag
2022-06-13

MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column whic

报错信息 报错信息及语句如下 SELECT i.sku_id sku_id,a.attr_id attr_id,a.attr_name attr_name, a.attr_valuefrom pms_sku_info iLEFT JOIN
2023-08-17

mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no

----mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no------解决方案:select @@global.sql_mode#将结果集中的
mysql 5.7.28 中GROUP BY报错问题    SELECT list is not in GROUP BY clause and contains no
2017-07-29

mysql执行语句出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY 。。

相关语句 show variables like "%sql_mode%"; SET sql_mode=(SELECT REPLACE(@@sql_mode,"ONLY_FULL_GROUP_BY",""));
mysql执行语句出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY 。。
2017-02-22

编程热搜

目录