Для чего используется ключевое слово DISTINCT в SQL?

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

Ответ

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

Базовый синтаксис:

SELECT DISTINCT column1, column2, ...
FROM table_name
WHERE condition;

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

  1. Получение уникальных значений одного столбца:

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

    -- Вернет уникальные пары (город, страна)
    SELECT DISTINCT city, country FROM customers;
  3. Использование с агрегатными функциями, например, COUNT:

    -- Подсчет количества уникальных городов
    SELECT COUNT(DISTINCT city) FROM customers;
    
    -- Без DISTINCT подсчитаются все строки, включая дубли
    SELECT COUNT(city) FROM customers;

Важные особенности и производительность:

  • DISTINCT выполняет сортировку или хэширование данных для поиска дубликатов, что может быть ресурсоемкой операцией на больших таблицах.
  • Применение DISTINCT ко всем столбцам (SELECT DISTINCT *) часто является признаком проблем в дизайне запроса или данных.
  • DISTINCT работает со всей строкой результата. Две строки считаются одинаковыми, только если все выбранные столбцы в них совпадают.
  • В некоторых случаях использование GROUP BY по тем же столбцам может быть более эффективной или семантически правильной альтернативой.