Есть ли разница между GROUP BY и DISTINCT? - PullRequest
272 голосов
/ 03 октября 2008

Я узнал кое-что простое о SQL на днях:

SELECT c FROM myTbl GROUP BY C

Имеет тот же результат, что и:

SELECT DISTINCT C FROM myTbl

Что мне интересно, есть ли что-то другое в том, как механизм SQL обрабатывает команду, или это действительно одно и то же?

Лично я предпочитаю четкий синтаксис, но я уверен, что это скорее привычка, чем все остальное.

РЕДАКТИРОВАТЬ: Это не вопрос о агрегатах. Использование GROUP BY с агрегатными функциями понятно.

Ответы [ 23 ]

0 голосов
/ 09 января 2018

Функциональная эффективность совершенно иная. Если вы хотите выбрать только «возвращаемое значение», за исключением дубликата, лучше использовать отличный, чем группировать Поскольку «группировать по» включают (сортировка + удаление), «отличные» включают (удаление)

0 голосов
/ 10 февраля 2015

Нет значительного различия между выражением group by и разделом, кроме использования агрегатных функций. И то, и другое можно использовать для различения значений, но если с точки зрения производительности, группировать лучше. Когда используется отдельное ключевое слово, внутренне используется операция сортировки, которую можно просмотреть в плане выполнения.

Попробуйте простой пример

Объявление таблицы @tmpresult ( Id tinyint )

Вставить в @tmpresult Выберите 5 Союз всех Выберите 2 Союз всех Выберите 3 Союз всех Выберите 4

Выберите отличный Я бы От @ tmpresult

0 голосов
/ 03 октября 2008

Я всегда понимал, что использование различных - это то же самое, что группирование по каждому полю, выбранному вами в порядке их выбора.

т.е:

select distinct a, b, c from table;

совпадает с:

select a, b, c from table group by a, b, c
...