Что делает оператор DISTINCT в SQL?

«Что делает оператор DISTINCT в SQL?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Оператор DISTINCT используется в SQL-запросах для исключения дублирующихся строк из результирующего набора. Он применяется в предложении SELECT и возвращает только уникальные комбинации значений указанных столбцов.

Пример использования:

-- Получить список уникальных городов из таблицы пользователей
SELECT DISTINCT city FROM users;

-- Получить уникальные пары город-страна
SELECT DISTINCT city, country FROM users;

Ключевые особенности:

  • DISTINCT применяется ко всем столбцам в списке SELECT
  • Для поиска дубликатов СУБД обычно выполняет сортировку, что может влиять на производительность на больших таблицах
  • NULL значения считаются равными друг другу, поэтому DISTINCT вернет только один NULL
  • Для агрегирования с подсчетом уникальных значений часто используют COUNT(DISTINCT column):
    -- Подсчитать количество уникальных городов
    SELECT COUNT(DISTINCT city) FROM users;
  • В некоторых случаях альтернативой может быть GROUP BY, но семантика отличается: GROUP BY предназначен для агрегации, а DISTINCT — только для удаления дубликатов.