mysql分组查询报错
2024-10-19 02:22:30
执行sql group by查询时报错
SELECT id from userz GROUP BY username
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
原因:
mysql实现了对功能依赖的检测,如果启用了only_full_group_by sql模式(在默认情况下是这样),那么mysql就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们
执行以下命令,可以查看sql_mode的内容
mysql> SHOW SESSION VARIABLES; mysql> SHOW GLOBAL VARIABLES; mysql> select @@sql_mode;
可见session和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
only_full_group_by说明:
only_full_group_by :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好
解决:
执行以下两个命令:
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'; mysql> 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';
这两个命令的作用是去掉 sql_mode 的 ONLY_FULL_GROUP_BY
参考https://blog.csdn.net/fansili/article/details/78664267
最新文章
- ES6中的const命令【转】
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;
- 之前想搞一个nim但因为是自用我会持续修复完善
- Java内存区域-- 运行时数据区域
- Spring的profile属性
- android 开源框架推荐
- ARM学习笔记9——ARM汇编汇编语言中的伪指令
- HttpWebRequest 写入报错
- 转:代码的坏味道之二十 :Data Class(纯稚的数据类)或POJO
- Commix命令注入漏洞利用
- Effective Java 第三版——24. 优先考虑静态成员类
- 20175211 2017-2018-2 《Java程序设计》第六周学习记录(2)
- spring事务 将多个connection放到一个线程中
- Grafana 安装及 Windows 应用程序服务配置工具 NSSM使用
- 《JavaScript Dom 编程艺术》读书笔记-第4章
- Android GUI之View测量
- MyBatis的深入原理分析之1-架构设计以及实例分析
- Codeforces Round #527 (Div. 3)
- 反射报错java.lang.IllegalArgumentException: wrong number of arguments
- QA规范
热门文章
- 基于consul构建golang系统分布式服务发现机制
- java中JSONObject与JSONArray的使用
- Hibernate每个子类一张表(使用注释)实例
- Spring MVC集成Log4j
- IDEA15入门常用设置
- Editor编辑器的一些用法
- MySQL的having子句
- xshell ftp报错:找不到匹配的outgoing encryption算法
- 【BZOJ4817】[Sdoi2017]树点涂色 LCT+线段树
- 为什么调用 GdiplusShutdown 函数会在 DllExports::GdipDeleteGraphics(nativeGraphics) 位置抛出异常?