Как вывести уникальные значения в SQL с помощью оператора DISTINCT?

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

Ответ

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

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

SELECT DISTINCT column_name FROM table_name;

Практические примеры:

  1. Уникальные значения из одного столбца:

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

    -- Найти все уникальные пары «город — страна»
    SELECT DISTINCT city, country FROM customers;

    Важно: DISTINCT применяется ко всей строке результата. Запрос выше вернет все комбинации (city, country), где хотя бы одно значение отличается.

  3. Использование с сортировкой (ORDER BY):

    SELECT DISTINCT category FROM products ORDER BY category;
  4. Использование с агрегатными функциями:

    -- Подсчет количества уникальных категорий
    SELECT COUNT(DISTINCT category) FROM products;

DISTINCT vs GROUP BY:

Для простого получения уникальных значений DISTINCT является более идиоматичным и читаемым вариантом. GROUP BY лучше использовать, когда нужна агрегация данных.

-- Эквивалентные результаты, но разная семантика:
SELECT DISTINCT status FROM orders;
SELECT status FROM orders GROUP BY status;

-- GROUP BY раскрывает свой потенциал с агрегацией:
SELECT status, COUNT(*) as order_count 
FROM orders 
GROUP BY status;

Примечание: Использование DISTINCT может негативно влиять на производительность на больших таблицах, так как требует сортировки и сравнения строк.