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

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

Ответ

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

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

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

Как это работает:

  • DISTINCT применяется ко всей комбинации столбцов, перечисленных после SELECT. Запрос SELECT DISTINCT a, b вернет уникальные пары (a, b).
  • Для определения уникальности используется сравнение значений, при этом NULL считается равным другому NULL.

Важные нюансы:

  • Производительность: Использование DISTINCT требует дополнительной сортировки и сравнения данных, что может быть ресурсоемким на больших таблицах.
  • Альтернативы: Для более сложной агрегации или подсчета уникальных значений часто эффективнее использовать GROUP BY.
    -- Эквивалентный результат с GROUP BY
    SELECT city
    FROM users
    GROUP BY city;
  • DISTINCT ON (PostgreSQL): В PostgreSQL существует расширение DISTINCT ON (expression), которое позволяет оставить только первую строку для каждой группы, заданной выражением.