В этом учебном материале вы узнаете, как использовать SQL оператор DISTINCT с синтаксисом и примерами.
Описание
SQL оператор DISTINCT используется для удаления дубликатов из результирующего набора оператора SELECT.
Синтаксис
Синтаксис для оператора DISTINCT в SQL:
FROM tables
[WHERE conditions];
Параметры или аргументы
- expressions
- Столбцы или расчеты, которые вы хотите получить.
- tables
- Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.
Примечание
- Если в операторе DISTINCT указано только одно выражение, запрос возвратит уникальные значения для этого выражения.
- Если в операторе DISTINCT указано несколько выражений, запрос извлекает уникальные комбинации для перечисленных выражений.
- В SQL оператор DISTINCT не игнорирует значения NULL. Поэтому при использовании DISTINCT в вашем операторе SQL ваш результирующий набор будет содержать значение NULL в качестве отдельного значения.
Пример - поиск уникальных значений в столбце
Давайте посмотрим, как использовать оператор DISTINCT для поиска уникальных значений в одном столбце таблицы.
В этом примере у нас есть таблица suppliers со следующими данными:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russia |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | Ile de France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Давайте найдем все уникальные значения в таблице suppliers. Введите следующий SQL оператор:
1 2 3 |
SELECT DISTINCT state FROM suppliers ORDER BY state; |
Будет выбрано 6 записей. Вот результаты, которые вы должны получить:
state |
---|
Russia |
Ile de France |
Pennsylvania |
California |
Washington |
Michigan |
В этом примере возвращаются все уникальные значения состояния из таблицы поставщиков и удаляются все дубликаты из набора результатов. Как видите, штат Калифорния в наборе результатов отображается только один раз, а не четыре раза.
Пример - поиск уникальных значений в нескольких столбцах
Далее давайте рассмотрим, как использовать SQL DISTINCT для удаления дубликатов из более чем одного поля в операторе SELECT.
Используя ту же таблицу suppliers из предыдущего примера, введите следующий SQL оператор:
1 2 3 |
SELECT DISTINCT city, state FROM suppliers ORDER BY city, state; |
Будет выбрано 8 записей. Вот результаты, которые вы получите:
city | state |
---|---|
Moscow | Russian |
Lansing | Michigan |
Redwood City | California |
Redmond | Washington |
Sunnyvale | Washington |
Paoli | Pennsylvania |
Paris | France |
Menlo Park | California |
В этом примере будет возвращаться каждая уникальная комбинация city и state. В этом случае DISTINCT применяется к каждому полю, указанному после ключевого слова DISTINCT. Как видите, 'Redwood City', 'California' в наборе результатов отображается только один раз, а не дважды.
Пример - как DISTINCT обрабатывает значения NULL
Наконец, считает ли оператор DISTINCT NULL уникальным значением в SQL? Ответ - да. Давайте рассмотрим это дальше.
В этом примере у нас есть таблица products со следующими данными:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
Теперь давайте выберем уникальные значения из поля category_id, которое содержит значение NULL. Введите следующий запрос SQL:
1 2 3 |
SELECT DISTINCT category_id FROM products ORDER BY category_id; |
Будет выбрано 4 записи. Вот результаты, которые вы должны получить:
category_id |
---|
NULL |
25 |
50 |
75 |
В этом примере запрос вернет уникальные значения, найденные в столбце category_id. Как видно из первой строки в наборе результатов, NULL - это уникальное значение, которое возвращается оператором DISTINCT.