Да. Ты прав. Это происходит из-за версии 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 -сообщества нт
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(not sure) запрос без GROUP BY
не работает независимо от sql_mode ONLY_FULL_GROUP_BY
установлен или нет.
Некоторые интересные ошибки и sql_mode чаво ссылка
- ONLY_FULL_GROUP_BY sql mode is overly restrictive
- sql-mode: only full group by mode not working
- MySQL 5.0 FAQ: Server SQL Mode