大家在对数据表进行分组查询的时候肯定遇到过类似于这样的问题:
select username,age from users group by age;
然后mysql 就报错:
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mytest.users.username' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
大致的意思就是你必须将所要查询的username,age都进行分组操作才可以....所以就必须这样
select username,age from users group by age,username;才能通过编译,但这样就失去了分组本来的意义
因此我们通过改变sql_mode='';来改变原来的sql_mode='ONLY_FULL_GROUP_BY';这样就可以了
- 浏览: 82992 次
最新评论
-
coralsea:
试试log4jdbc
SpringMVC+MyBatis+Log4j输出sql语句 -
hellotieye:
题目是什么意思???
NYOJ118 求次小生成树
相关推荐
MySQL版本问题,特别是关于`sql_mode=only_full_group_by`的设置,是一个常见的困扰开发者的问题。在MySQL中,`sql_mode`是一个变量,它定义了服务器执行SQL语句时遵循的规则集。`ONLY_FULL_GROUP_BY`是其中的一种...
MySQL 5.7及以上版本引入了一个新的SQL标准模式`ONLY_FULL_GROUP_BY`,该模式旨在增强SQL查询的严格性,确保结果集的合法性。在早期的MySQL版本中,某些GROUP BY查询可以返回不确定的行数据,这在严格模式下是不允许...
案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of XXXXXX list is not in GROUP BY clause and contain
this is incompatible with sql_mode=only_full_group_by 那么在此执行这两句 select @@global.sql_mode; set sql_mode = (SELECT REPLACE(@@sql_mode, ‘ONLY_FULL_GROUP_BY’, ‘’)); %y:表示显示两位的年份 %m:...
然而,在MySQL 5.7.x及更高版本中,默认启用了`ONLY_FULL_GROUP_BY`模式,这导致了对`GROUP BY`语句更为严格的解释。在`ONLY_FULL_GROUP_BY`模式下,所有出现在`SELECT`列表中但未包含在`GROUP BY`子句的列必须是...
这个错误提示表明你的查询违反了`ONLY_FULL_GROUP_BY`的SQL模式,这是MySQL 5.7.5及更高版本默认启用的一种严格模式。 `ONLY_FULL_GROUP_BY`模式的存在是为了确保查询结果的一致性和可预测性。在该模式下,MySQL不...
1、写在开头 标题之前我想说一下Linux的mysql真的实在是太坑了。太坑了。总是会出现这样那样的你想不...4、今天要说的就是 没有打开only_full_group_by Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcepti
本文主要关注的是几个常见的问题及其解决方案,包括因`sql_mode=only_full_group_by`导致的GROUP BY查询错误、清空表数据的方法,以及如何处理MySQL占用过多内存的情况。 首先,`sql_mode=only_full_group_by`是...
6. **最佳实践**:虽然禁用 `ONLY_FULL_GROUP_BY` 可以解决问题,但更好的做法是根据需求调整查询,确保 `SELECT` 子句中的每个列要么是聚合函数的一部分,要么出现在 `GROUP BY` 子句中,以保证结果的正确性。...
MySQL 5.7引入了一项新的SQL模式,即`ONLY_FULL_GROUP_BY`,这导致了在升级后一些原本能够正常运行的SQL语句出现错误1055。这个错误主要出现在当你试图在GROUP BY子句中使用未聚合的列时,而这些列并未在GROUP BY或...
MySQL 5.7 版本升级后,用户可能会遇到与`GROUP BY`查询相关的兼容性问题,这主要是由于新版本中默认启用的`ONLY_FULL_GROUP_BY` SQL模式引起的。此模式要求在`GROUP BY`子句中列出所有的非聚合列,以确保数据的正确...
`sql_mode=only_full_group_by`是MySQL的一种严格模式,它确保了查询结果的可预测性和一致性,避免了因隐式聚合可能引发的不一致数据。在非严格模式下,MySQL可能会选择任意行的数据来代表每个组,而在严格模式下,...
在升级MySQL到5.7后遇到的`GROUP BY`查询问题,通常与新的严格模式有关,理解这些变化并相应地调整代码是解决问题的关键。 总之,通过`SQL_CALC_FOUND_ROWS`和`FOUND_ROWS()`的结合使用,可以有效地在`GROUP BY`...