Какой SQL-оператор используется для выборки уникальных значений?

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

Ответ

В SQL для выборки уникальных значений из столбца или набора столбцов используется оператор DISTINCT.

Синтаксис и пример:

-- Выбрать уникальные значения из одного столбца
SELECT DISTINCT department FROM employees;

-- Выбрать уникальные комбинации значений из нескольких столбцов
SELECT DISTINCT department, job_title FROM employees;

-- DISTINCT можно использовать с агрегатными функциями
SELECT COUNT(DISTINCT department) FROM employees;

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

Важное отличие от GROUP BY: DISTINCT и GROUP BY без агрегатных функций могут давать схожий результат, но семантически различаются:

  • DISTINCT указывает на удаление дубликатов.
  • GROUP BY указывает на группировку для агрегации.

Пример на других языках (для контекста):

  • Python: Используйте set() или pandas.unique().
    my_list = [1, 2, 2, 3]
    unique_values = set(my_list)  # {1, 2, 3}
    # Или с сохранением порядка (Python 3.7+ dict, 3.6+ с collections.OrderedDict)
    unique_ordered = list(dict.fromkeys(my_list))  # [1, 2, 3]
  • JavaScript: Используйте объект Set.
    const myArray = [1, 2, 2, 3];
    const uniqueValues = [...new Set(myArray)]; // [1, 2, 3]