-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDISTINCT.txt
76 lines (57 loc) · 4.93 KB
/
DISTINCT.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
****** SQL оператор DISTINCT ******
SQL оператор DISTINCT используется для удаления дубликатов из результирующего
набора оператора SELECT. Или вывод уникальных записей.
Синтаксис для оператора DISTINCT в SQL:
********************************************************************************************
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
********************************************************************************************
Параметры или аргументы:
- expressions - cтолбцы или расчеты, которые вы хотите получить.
- tables - таблицы, из которых вы хотите получить записи.
В предложении FROM должна быть указана хотя бы одна таблица.
- WHERE conditions - необязательный. Условия, которые должны быть выполнены
для записей, которые будут выбраны.
!!! Примечание !!!
Если в операторе DISTINCT указано только одно выражение, запрос возвратит уникальные значения
для этого выражения.
Если в операторе DISTINCT указано несколько выражений, запрос извлекает уникальные комбинации
для перечисленных выражений.
В SQL оператор DISTINCT не игнорирует значения NULL. Поэтому при использовании DISTINCT в вашем
операторе SQL ваш результирующий набор будет содержать значение NULL в качестве отдельного значения.
****** Поиск уникальных значений в столбце ******
Использование оператора DISTINCT для поиска уникальных значений в одном столбце таблицы.
У нас есть таблица suppliers со следующими полями: supplier_id, supplier_name, city, state.
Найдем все уникальные значения в таблице suppliers.
Следующий SQL запрос в PgSQL это позволит сделать:
********************************************************************************************
SELECT DISTINCT state
FROM suppliers
ORDER BY state;
********************************************************************************************
В этом примере возвращаются все уникальные значения состояния из таблицы поставщиков и удаляются
все дубликаты из набора результатов. Если поле state содержит дубликаты, то будет выведен только один.
****** Поиск уникальных значений в нескольких столбцах ******
Рассмотрим, как использовать SQL DISTINCT для 'удаления' (не вывода на экран, в выборку) дубликатов из
более чем одного поля в операторе SELECT.
SQL запрос в PgSQL:
********************************************************************************************
SELECT DISTINCT city, state
FROM suppliers
ORDER BY city, state;
********************************************************************************************
В этом примере будет возвращаться каждая уникальная комбинация city и state. В этом случае DISTINCT
применяется к каждому полю, указанному после ключевого слова DISTINCT.
****** Как DISTINCT обрабатывает значения NULL ******
Оператор DISTINCT считает уникальным значением NULL.
В этом примере у нас есть таблица products со следующими полями: product_id, product_name, category_id
Теперь давайте выберем уникальные значения из поля category_id, которое содержит значение NULL.
SQL запрос в PgSQL:
********************************************************************************************
SELECT DISTINCT category_id
FROM products
ORDER BY category_id;
********************************************************************************************
В этом примере запрос вернет уникальные значения, найденные в столбце category_id и NULL - это
уникальное значение, которое возвращается оператором DISTINCT.