UNION, UNION ALL
Пример 1.
SELECT region_id, name
FROM dept
ORDER BY name;
|
SELECT id, name
FROM region;
|
---|---|
REGION_ID NAME ---------- ---------------------- 1 Administration 1 Finance 1 Operations 2 Operations 5 Operations 4 Operations 3 Operations 1 Sales 2 Sales 3 Sales 4 Sales 5 Sales |
ID NAME ---------- ---------------------- 1 North America 2 South America 3 Africa / Middle East 4 Asia 5 Europe |
SELECT name FROM region
UNION
SELECT name FROM dept;
UNION
SELECT name FROM dept;
NAME
--------------------------------------------------
Administration
Africa / Middle East Asia
Europe
Finance
North
America
Operations
Sales
South
America
--------------------------------------------------
Administration
Africa / Middle East Asia
Europe
Finance
North
America
Operations
Sales
South
America
Комментарий:
Оператор UNION позволяет объединить две или больше инструкций SELECT. Набор результатов каждой инструкции SELECT вычисляются и расположены друг над другом, а затем сортируются с целью устранения дубликатов.
Пример 2.
Комментарий:
Оператор UNION ALL не устраняет дубликатов и не сортирует данные. Первые 5 строк из таблицы региона и последние 12 таблицы DEPT.
Пример 3.
Комментарий:
На этот раз мы использовали оператор DISTINCT, который вызвал устранения дубликатов. Конечный результат сортируется по убыванию - явно пользователем, а не автоматически.
Комментарий:
Оператор INTERSECT возвращает строки, которые появляются в обоих запросах SELECT. В нашем случае, возвращаемый результат следует читать следующим образом: результататом запроса является ID клиентов, которые имеют хотябы один заказ.
Комментарий:
Оператор MINUS возвращает строки, которые появляются в первом запросе SELECT, и не встречаются во втором. В нашем случае, возвращаемый результат следует читать следующим образом: результататом запроса является ID клиентов, которые не сделали ни одного заказа.
SELECT name FROM region
UNION ALL
SELECT name FROM dept;
UNION ALL
SELECT name FROM dept;
NAME
--------------------------------------------------
North America
South America
Africa / Middle East
Asia
Europe
Finance
Sales
Sales
Sales
Sales
Sales
Operations
Operations
Operations
Operations
. . .
--------------------------------------------------
North America
South America
Africa / Middle East
Asia
Europe
Finance
Sales
Sales
Sales
Sales
Sales
Operations
Operations
Operations
Operations
. . .
Комментарий:
Оператор UNION ALL не устраняет дубликатов и не сортирует данные. Первые 5 строк из таблицы региона и последние 12 таблицы DEPT.
Пример 3.
SELECT DISTINCT name FROM region
UNION ALL
SELECT DISTINCT name FROM dept
ORDER BY 1 DESC;
UNION ALL
SELECT DISTINCT name FROM dept
ORDER BY 1 DESC;
NAME
--------------------------------------------------
South America
Sales
Operations
North America
Finance
Europe
Asia
Africa / Middle East
Administration
--------------------------------------------------
South America
Sales
Operations
North America
Finance
Europe
Asia
Africa / Middle East
Administration
Комментарий:
На этот раз мы использовали оператор DISTINCT, который вызвал устранения дубликатов. Конечный результат сортируется по убыванию - явно пользователем, а не автоматически.
INTERSECT
Пример 4.
SELECT id FROM customer
INTERSECT
SELECT customer_id FROM ord;
INTERSECT
SELECT customer_id FROM ord;
ID
----------
201
202
203
204
205
206
208
209
210
211
212
213
214
----------
201
202
203
204
205
206
208
209
210
211
212
213
214
Комментарий:
Оператор INTERSECT возвращает строки, которые появляются в обоих запросах SELECT. В нашем случае, возвращаемый результат следует читать следующим образом: результататом запроса является ID клиентов, которые имеют хотябы один заказ.
MINUS
Пример 5.
SELECT id FROM customer
MINUS
SELECT customer_id FROM ord;
MINUS
SELECT customer_id FROM ord;
ID
----------
207
215
----------
207
215
Комментарий:
Оператор MINUS возвращает строки, которые появляются в первом запросе SELECT, и не встречаются во втором. В нашем случае, возвращаемый результат следует читать следующим образом: результататом запроса является ID клиентов, которые не сделали ни одного заказа.
Комментариев нет :
Отправить комментарий