DBAtlas · Атлас эксплуатации баз данных

1055: Expression not in GROUP BY (only_full_group_by)

MySQL

Что это значит?

В списке SELECT или в HAVING/ORDER BY использован столбец, который не входит в GROUP BY и не обёрнут в агрегатную функцию. Поскольку включён режим SQL ONLY_FULL_GROUP_BY, MySQL отклоняет это недетерминированное выражение.

Почему возникает?

Запрос напрямую выбирает столбец, отличный от группируемых, но у этого столбца может не быть единственного значения на группу. ONLY_FULL_GROUP_BY включён по умолчанию в MySQL 5.7+; запросы, полагающиеся на старое нестрогое поведение GROUP BY, вызывают эту ошибку.

Как исправить

Либо добавьте столбец в список GROUP BY, либо оберните его в агрегатную функцию (MAX(), MIN(), ANY_VALUE()). Если вы знаете, что значение действительно уникально в группе, ANY_VALUE() намеренно подавляет неоднозначность. Отключение режима (удаление ONLY_FULL_GROUP_BY из sql_mode) вместо исправления запроса возвращает риск неверных результатов; избегайте этого.

Открыть в DBAtlas →

Ещё по этой СУБД