首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ONLY_FULL_GROUP_BY未设置但仍有错误1140

ONLY_FULL_GROUP_BY未设置但仍有错误1140
EN

Stack Overflow用户
提问于 2013-04-12 11:52:27
回答 1查看 2.5K关注 0票数 1

我正在完成我的网站的实施,但现在我有一个问题发生在网上,我没有本地。

我知道这个错误:

代码语言:javascript
复制
failed: Mixing of GROUP columns (MIN (), MAX (), COUNT (), ...) with no GROUP columns is illegal if there is no GROUP BY clause

SQL查询的结果

我在网上搜索了很多论坛,大多数用户建议更改我不能/不想要的查询,或者他们说它可能处于sql-模式:启用服务器的ONLY_FULL_GROUP_BY

我的sql模式在我的服务器在线上是空的(我可以通过查询select @@sql_mode;看到),更确切地说,我把sql_mode='' in my.cnf放在了。

但问题依然存在。

这是由于我的MySQL5.0.44版本在我的服务器上在线和本地5.1.32 (我没有这个bug .)吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-13 11:30:18

是。你是正确的。发生这种情况的原因是MySQL版本.

看看我的答案,这里

如何检查MySQL版本?

代码语言:javascript
复制
mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 5.5.28    |
+-----------+
1 row in set (0.00 sec)    

为了测试sql_mode ONLY_FULL_GROUP_BY,我创建了带有两列id, name和插入记录的表patient。请记住,sql_mode ONLY_FULL_GROUP_BY不是默认设置,如果需要,则需要设置。

1) 5.0.45-community-nt MySQL版本

代码语言:javascript
复制
SELECT name, MAX(id) FROM patient;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause  

它失败了,没有必要将sql_mode设置为ONLY_FULL_GROUP_BY,因为它不允许在GROUP子句中未命名的非聚合列。

2) 5.1.40-community MySQL版本

代码语言:javascript
复制
mysql> SELECT name, MAX(id) from patient;
+----------+--------+
| MAX(id)  | name   |
+----------+--------+
|       33 | aniket |
+----------+--------+
1 row in set (0.03 sec)  

然后在设置sql_mode ONLY_FULL_GROUP_BY之后

代码语言:javascript
复制
mysql> set sql_mode = 'ONLY_FULL_GROUP_BY';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT name, MAX(id) from patient;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause  

3)MySQL版本5.5.28

代码语言:javascript
复制
mysql> SELECT name, MAX(id) from patient;
+----------+--------+
| MAX(id)  | name   |
+----------+--------+
|       33 | aniket |
+----------+--------+
1 row in set (0.03 sec)  

然后在设置sql_mode ONLY_FULL_GROUP_BY之后

代码语言:javascript
复制
mysql> set sql_mode = 'ONLY_FULL_GROUP_BY';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT name, MAX(id) from patient;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause  

结论

如您所见,5.0.45版本的查询失败,5.1.40、5.5.28和5.1.32之后的查询成功(正如您所提到的)。在MySQL版本之前,没有GROUP BY5.1.10(不确定)查询会失败,而不管sql_mode ONLY_FULL_GROUP_BY集是否设置。

一些有趣的bug和sql_mode常见问题链接

  1. BY sql模式限制过大。
  2. sql-模式:只有按模式排列的完整组无法工作。
  3. MySQL 5.0常见问题:服务器SQL模式
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15970686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档