выберите с помощью простого столбца и статистической функции, возвращающей результаты - PullRequest
0 голосов
/ 15 апреля 2019

Я освежил свои знания SQL и наткнулся на пример, который должен был вызвать ошибку.Я использую MySQL.

Состояние SQL выглядит следующим образом:

 SELECT price, COUNT(*) As num_products
 FROM product

Я получил такой результат:

 preco   count(*
  100    9

Почему это сочетание простого столбца иагрегат работает?

1 Ответ

2 голосов
/ 15 апреля 2019

Ваш запрос использует статистическую функцию, и это означает, что ваш запрос возвращает одну группу данных. Поэтому поведение этого запроса аналогично запросу с оператором GROUP BY. MySQL не выдаст ошибку, если в этих случаях режим ONLY_FULL_GROUP_BY отключен. Официальная документация гласит:

Если запрос имеет агрегатные функции и нет предложения GROUP BY, он не может иметь неагрегированные столбцы в списке выбора, условие HAVING или Список ORDER BY с ONLY_FULL_GROUP_BY включен:

Более подробную информацию об этом поведении можно получить в официальной документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...