专栏首页流柯技术学院MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题

MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题

目录

报错现象

执行SQL报错如下:

SELECT student.s_no,student.s_name,SUM(result.mark) FROM student,result WHERE student.s_no=result.s_no GROUP BY student.s_no
> 1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_ketest.student.s_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
> 时间: 0.081s

原因

MySQL5.7.5及以上版本有依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认开启),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。)

解决方法

方法一 使用命令行或者数据库客户端执行SQL 1.SQL语句,select @@global.sql_mode查询

mysql> select @@global.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.06 sec)

2.去掉ONLY_FULL_GROUP_BY,重新设置值

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

方法二 vi修改MySQL配置文件my.cnf

[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

保存配置文件,重启MySQL服务:service mysql restart End

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows下JIRA6.3.6安装、汉化、破解

    3、选择安装模式:   Express Install(use default settings):使用默认安装选项    Custom install(rec...

    流柯
  • 虚拟硬盘格式vdi、vhd、vmdk相互转换

    Windows7的引导程序能够引导vhd格式的虚拟硬盘,而VirtualBox创建的虚拟硬盘文件是vdi格式的,怎么办呢? 以前要借助其他软件才能实现,但是V...

    流柯
  • Tomcat之jvm及连接数设置

    1、错误提示:java.lang.OutOfMemoryError: Java heap space

    流柯
  • 数据库sql面试需要准备哪些?

    SQL 是用于数据分析和数据处理的最重要的编程语言之一,因此与数据科学相关的工作(例如数据分析师、数据科学家和数据工程师)在面试时总会问到关于 SQL 的问题。...

    用户2781897
  • traefik 结合 docker-compose 的快速安装及使用

    用其搭配 docker-compose 部署网站,可轻松绑定域名,设置 https , 负载均衡,已在多个项目使用,文档可靠,强烈推荐!

    易墨
  • truncate分区表的操作,会导致全局索引失效?

    truncate是删除数据操作,但他是DDL语句,不是delete这种DML语句,不会写redo和undo,不能rollback。

    bisal
  • 【Rust日报】 2020-06-11 进一步理解 Rust 错误处理

    本文 Rust 的初学者和对 Rust 感兴趣却还没能很好上手的朋友更加友好。阅读和理解大约需要15分钟,仅需一些基本的编程知识,你就能很好的理解本文。

    MikeLoveRust
  • Hive的数据存储

    https://www.cnblogs.com/huifeidezhuzai/p/9251969.html

    休辞醉倒
  • 【Rust 日报】2020-03-25 regex crate 的计划

    测试驱动的 Rust 学习项目,适合有其他语言编程经验的 Rust 新手. 在这个项目中,你可以通过一系列测试驱动的练习以及阅读材料来学习如何构建一个 JIRA...

    MikeLoveRust
  • 加拿大将如何在AI上发力?

    编译 | AI科技大本营(rgznai100) 参与 | 焦燕 加拿大向来是一个低调的国家,这个多民族国家的人民对一切事物怀着开放包容不争不抢的心态。然而,最近...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券