-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIN.txt
116 lines (88 loc) · 6.37 KB
/
IN.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
****** SQL условие IN ******
SQL условие IN (иногда называемое оператором IN) позволяет легко проверить,
соответствует ли выражение какому-либо значению в списке значений.
Он используется, чтобы помочь уменьшить потребность в нескольких условиях
OR в операторе SELECT, INSERT, UPDATE или DELETE.
Синтаксис условия IN в SQL:
****************************************************************************************
expression IN (value1, value2, .... value_n);
****************************************************************************************
Или
****************************************************************************************
expression IN (subquery);
****************************************************************************************
Параметры:
- expression - это значение для тестирования.
- value1, value2 ..., value_n - это значения для проверки на соответствие expression.
Если какое-либо из этих значений соответствует expression,
условие IN будет иметь значение true.
- subquery - подзапрос - это оператор SELECT, чей набор результатов будет проверен на
соответствие c expression. Если какое-либо из этих значений соответствует
expression, условие IN будет иметь значение true.
****** Использование условия IN с символьными значениями ******
Условие IN может использоваться с любым типом данных в SQL. Например, как использовать
условие IN с символьными (строковыми) значениями. У нас есть таблица suppliers со
следующими полями: supplier_id, supplier_name, city, state.
Формируем SQL запрос:
****************************************************************************************
SELECT *
FROM suppliers
WHERE supplier_name IN ('Yandex', 'Oracle', 'Facebook');
****************************************************************************************
В этом примере будут возвращены все строки из таблицы suppliers, где supplier_name -
Yandex, Oracle или Facebook. Поскольку в SELECT используется *, то все поля из таблицы
suppliers будут отображаться в наборе результатов.
Это эквивалентно следующему запросу SQL:
****************************************************************************************
SELECT *
FROM suppliers
WHERE supplier_name = 'Yandex'
OR supplier_name = 'Oracle'
OR supplier_name = 'Facebook';
****************************************************************************************
Использование условия IN облегчает чтение запроса и делает его более коротким, чем
использование нескольких условий OR.
****** Использование условия IN с числовыми значениями ******
Допустим у нас есть таблица customer и следующими полями:
customer_id, first_name, last_name, favorite_website.
Делаем следующий SQL запрос:
****************************************************************************************
SELECT *
FROM customers
WHERE customer_id IN (5000, 7000, 8000, 9000);
****************************************************************************************
В результате будут возвращены все записи из таблицы customers, где customer_id равен жестко:
5000, 7000, 8000 или 9000.
Это эквивалентно следующему SQL запросу:
****************************************************************************************
SELECT *
FROM customers
WHERE customer_id = 5000
OR customer_id = 7000
OR customer_id = 8000
OR customer_id = 9000;
****************************************************************************************
****** Использование условия IN с оператором NOT ******
Как использовать условие IN с оператором NOT. Оператор NOT используется для отмены условия.
Когда мы используем оператор NOT с условием IN, мы создаем условие NOT IN. Т.е. проверяем,
нет ли выражения в списке.
Допустим у нас есть таблица products со следующими полями: product_id, product_name, category_id
Формируем PgSQL запрос:
****************************************************************************************
SELECT *
FROM products
WHERE product_name NOT IN ('Pear', 'Banana', 'Bread');
****************************************************************************************
В этом примере будут возвращены все строки из таблицы products, где product_name не является
Pear, Banana или Bread. Иногда более эффективно перечислять значения, которые мы не хотим,
в отличие от значений, которые мы хотели бы.
Это эквивалентно следующему оператору SQL:
****************************************************************************************
SELECT *
FROM products
WHERE product_name <> 'Pear'
AND product_name <> 'Banana'
AND product_name <> 'Bread';
****************************************************************************************
Эквивалентный оператор записывается с использованием условий AND вместо условий OR,
поскольку условие IN отменяется. При этом знак <> означает не равно.