Прежние версии стандартов SQL (SQL-92 и более ранние) не разрешают запросы с предложением SELECT
HAVING
или ORDER BY
, относящиеся к неагрегированным столбцам, которые не названы вGROUP BY
пункт. Если вы посмотрите на исходный запрос, то увидите, что ваш запрос делает именно то, чего не позволяют эти стандарты.
SELECT p.*, f.farm_name, f.county
...
GROUP BY f.id
«неагрегирующий столбец» означает любой столбец, в котором не используется агрегатная функция, напримерas sum () count () avg () и т. д.
Чтобы ваш запрос соответствовал этим стандартам, каждый столбец, указанный в списке выбора, будет указан в этой группе по предложению, а не только в одном. MySQL имеет функцию, которая позволяет вам выполнять несоответствующий стиль группировки запросов. Если бы вместо этого он сообщил вам, что запрос имеет неправильный синтаксис, вы, вероятно, поняли бы, что группа не поможет вам в этом.
Это означает, что вы используете MySQL, и что у вас нет режима SQL ONLY_FULL_GROUP_BY
на.
Я призываю вас избежать этой слабости MySQL, включите режим SQL ONLY_FULL_GROUP_BY
.
См .: https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html