Я ожидаю, что следующий запрос не будет выполнен, потому что я не поставил
желаемая агрегация ..
К сожалению, некоторые реализации SQL позволяют GROUP BY без агрегатной функции 1 .
В этом случае результат «не определен / реализация не определена» - см. Конкретную документацию по реализации, чтобы узнать, предоставляет ли она какие-либо гарантии. То есть, хотя все еще гарантируется, что столбец my_id
уникален, значения из любой строки могут быть возвращены для других полей вывода .
(Очевидно, что если бы my_id
был ключом / ключом-кандидатом - но это не так в данном случае - тогда это не имеет значения, поскольку может быть выбрана только одна строка * ..)
Для повышения совместимости и предсказуемых результатов, использовать агрегатную функцию для каждого поля, которое не охватывается GROUP BY - , даже если конкретный SQL / СУБД не предписывает и не «требует» использования агрегатов.
1 Хотя исходный запрос «принят» в MySQL ( в зависимости от ONLY_FULL_GROUP_BY ), и PostgreSQL, и SQL Server будут иметь отклоненные исходный запрос " как и ожидалось ".