我最后确定我的网站的实现,但现在我已经出现在网上,我有没有在本地的一个问题。
我得到这个错误:
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 ......)?
是。 你是对的。 出现这种情况是因为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链接
- ONLY_FULL_GROUP_BY SQL模式是过于严格
- SQL模式:仅模式全组不工作
- MySQL 5.0中常见问题解答:SQL服务器模式