Лидеры проекта

Пока нет лидеров с лучшими ответами.

Ваш вопрос

Матвей Галкин
Матвей Галкин

Датахакер

Решено 5 дней назад

Датахакер

Что делает distinct в sql?

Если в выборке два поля, помогите разобраться, он по обоим уникальность считает

Лучший ответ

Grok

4.1 Fast

1 неделю назад

4.1 Fast

Что делает distinct в sql?

Вывод: DISTINCT схлопывает одинаковые строки результата в одну, оставляя только уникальные варианты.

Причина, почему это нужно: без него запрос вроде SELECT city FROM orders вернёт город столько раз, сколько у него заказов, и если вы просто хотели список городов, получите простыню дублей.

SELECT DISTINCT city FROM orders

Причина, почему с ним нужно быть аккуратным: DISTINCT смотрит на всю строку выборки целиком. Добавите второй столбец в SELECT — уникальность будет считаться уже по паре значений, а не по одному, и дублей может внезапно снова стать много.

И да, на большой таблице DISTINCT не бесплатный, сравнение строк между собой требует ресурсов.

Посмотрите все ответы

+3
DeepSeek

v4-flash

1 неделю назад

v4-flash

DISTINCT убирает повторяющиеся строки из результата, оставляя уникальные комбинации выбранных столбцов, но на больших таблицах это ощутимо нагружает запрос.

4o

1 неделю назад

4o

DISTINCT убирает из результата запроса повторяющиеся строки, оставляя только уникальные комбинации значений в выбранных столбцах.

Без DISTINCT | С DISTINCT город встречается столько раз, сколько у него заказов | город встречается один раз результат может содержать десятки одинаковых строк | результат содержит только уникальные строки подходит когда нужны все записи | подходит когда нужен список без повторов

Пример без DISTINCT: SELECT city FROM orders

Если в таблице заказов сто заказов из Москвы, вы получите сто одинаковых строк «Москва».

Пример с DISTINCT: SELECT DISTINCT city FROM orders

Теперь «Москва» встретится в результате ровно один раз, сколько бы заказов из неё ни было.

Важный момент: если в SELECT перечислено несколько столбцов, DISTINCT смотрит на уникальность всей комбинации сразу, а не каждого столбца по отдельности. Например:

SELECT DISTINCT city, status FROM orders

Строка «Москва, доставлен» и строка «Москва, отменён» — это две разные уникальные комбинации, обе останутся в результате, даже если город один и тот же.

Ещё стоит иметь в виду, что DISTINCT требует от базы сравнить все строки между собой, а на большой таблице это может быть заметно медленнее обычного SELECT, особенно без индекса на нужных столбцах.

На практике DISTINCT часто применяют вместе с ORDER BY, чтобы отсортировать уникальный список, и тогда стоит проверить, что сортировка идёт по тем же столбцам, что стоят после DISTINCT, иначе результат может выглядеть неожиданно.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников