ONLY_FULL_GROUP_BY没有设置,但仍然有错误1140(ONLY_FULL_GROUP_

2019-10-18 00:42发布

我最后确定我的网站的实现,但现在我已经出现在网上,我有没有在本地的一个问题。

我得到这个错误:

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

但问题依然存在。

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

Answer 1:

是。 你是对的。 出现这种情况是因为MySQL版本。
检查我的答案在这里

如何检查MySQL的版本?

mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 5.5.28    |
+-----------+
1 row in set (0.00 sec)    

对于测试的sql_mode ONLY_FULL_GROUP_BY ,我创建的表patient有两列id, name和插入的记录。 记住的sql_mode ONLY_FULL_GROUP_BY没有默认设置,您需要设置,如果你想。

1)MySQL版本5.0.45社区-NT

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 BY子句中命名非聚合列。

2)MySQL版本5.1.40社区

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

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

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

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版本之前5.1.10(不知道)无查询GROUP BY失败不管的sql_mode的ONLY_FULL_GROUP_BY设置与否。

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

  1. ONLY_FULL_GROUP_BY SQL模式是过于严格
  2. SQL模式:仅模式全组不工作
  3. MySQL 5.0中常见问题解答:SQL服务器模式


文章来源: ONLY_FULL_GROUP_BY not set but still have Error 1140