MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题
2024-09-07 10:45:32
报错现象
执行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
最新文章
- linux(六)__进程与任务控制
- vs git extensions简单使用方法
- 5.7 NDK开发
- elasticsearch-cn-out-of-box
- Google 宣布支持中文邮箱地址
- JQuery ajax请求一直返回Error(parsererror)
- C#_MVC_Repository_CRUD_Model
- [转载]MongoDB学习 (五):查询操作符(Query Operators).1st
- SQL Server 启用 xp_cmdshell 与bcp 使用
- [Leetcode][001] Two Sum (Java)
- 搭建Hadoop集群 (二)
- android onKeydown
- idea 注册机生成密钥代码
- protobuf使用NDK编译Android的静态库(工作记录)
- C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)
- SpringMVC简版教程、部分功能
- SQL Server中的Merge关键字 更新表数据
- JAVA基础——面向对象三大特性:封装、继承、多态
- zTree实现获取当前选中的第一个节点在同级节点中的序号
- @RunWith注解作用
热门文章
- Python日期和时间_什么是Tick_什么是时间元组_获取当前时间
- PHP curl_unescape函数
- 2019 HL SC day2
- dp的本质
- MVC + EFCore 项目实战 - 数仓管理系统9 - 数据源管理完结篇
- Java 命令行 编译、执行、打包
- Codechef May Challenge 2020 Division 1 记录
- 导航菜单(动画)--- jQuery
- [机器学习] keras:MNIST手写数字体识别(DeepLearning 的 HelloWord程序)
- 【模式识别与机器学习】——4.3离散K-L变换