да. Ты прав. Это происходит из-за версии 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-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-сообщество
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 сервера
person
Aniket Kulkarni
schedule
13.10.2013