我正在最终确定我的网站的实施,但现在我遇到了一个我在本地没有的问题。
我收到此错误:
failed: Mixing of GROUP columns (MIN (), MAX (), COUNT (), ...) with no GROUP columns is illegal if there is no GROUP BY clause
SQL查询的结果
我在网上搜索了很多论坛,大多数用户建议更改我不能/不想要的查询,或者他们说这可能是在sql-mode:enabled ONLY_FULL_GROUP_BY
服务器
我的sql-mode在我的服务器上是空的(我可以看到查询select @@sql_mode;
)
更确切地说,我放了sql_mode='' in my.cnf
。
但问题仍然存在。
这是由于我的服务器上的mysql 5.0.44版本在线和本地5.1.32(我没有这个错误......)?
答案 0 :(得分:1)
是。你是对的。这是因为 MySQL版本。
检查我的回答here
如何查看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-community-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-community
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之后/之后成功(正如您在上面提到的那样)。
在没有GROUP BY
的MySQL版本5.1.10(not sure)查询失败之前,无论是否设置了sql_mode ONLY_FULL_GROUP_BY
。
一些有趣的错误和sql_mode faq链接