Команда UNION ALL
Команда UNION ALL используется для такого объединения результатов двух операторов SELECT, в которое включаются и повторения строк. Правила использования команды UNION ALL такие же, как и правила использования UNION.
Синтаксис оператора с использованием команды UNION ALL должен быть следующим.
SELECT столбец1 [, столбец2 ] FROM таблица1 [, габлица2 ] [ WHERE ]
UNION ALL
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
Рассмотрим пример.
SELECT EMP_ID FROM EMPLOYEE_TBL
UNION ALL
SELECT EMP_ID FROM EMPLOYEE_PAY_TBL;
В результате табельные номера, имеющиеся в обеих таблицах, отобразятся дважды.
Следующий составной запрос отличается от составного запроса из предыдущего раздела только использованием команды UNION ALL вместо UNION.
SELECT PROD_DESC FROM PRODUCTS_TBL
UNION ALL
SELECT PROD_DESC FROM PRODUCTS_TMP;
PROD__DESC
КОСТЮМ ВЕДЬМЫ
ПЛАСТИКОВЫЕ ТЫКВЫ
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
ФОНАРИ
КОСТЮМЫ В АССОРТИМЕНТЕ
СЛАДКАЯ КУКУРУЗА
ТЫКВЕННЫЕ КОНФЕТЫ
ПЛАСТИКОВЫЕ ПАУКИ
МАСКИ В АССОРТИМЕНТЕ
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ
ПОЛОЧКА ИЗ ДУБА
КОСТЮМ ВЕДЬМЫ
ПЛАСТИКОВЫЕ ТЫКВЫ
|
|
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
ФОНАРИ
КОСТЮМЫ В АССОРТИМЕНТЕ
СЛАДКАЯ КУКУРУЗА
ТЫКВЕННЫЕ КОНФЕТЫ
ПЛАСТИКОВЫЕ ПАУКИ
МАСКИ В АССОРТИМЕНТЕ
Обратите внимание на то, что возвращены 20 строк (11+9), поскольку команда UNION ALL предполагает включение в вывод повторения строк.
Команда INTERSECT используется для такого комбинирования результатов двух операторов SELECT, при котором в вывод попадают только те строки из первого запроса, для которых имеются идентичные строки из второго запроса Правила использования команды INTERSECT аналогичны правилам использования команды UNION.
Синтаксис оператора с использованием команды INTERSECT должен быть следующим.
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
INTERSECT
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
Рассмотрим пример.
SELECT CUST_ID FROM CUSTOMER_TBL
INTERSECT
SELECT CUST_ID FROM ORDERS_TBL;
В результате отобразятся номера кодов только тех заказчиков, которые разместили заказы.
Следующий составной запрос аналогичен предыдущим, но в нем используется команда INTERSECT.
SELECT PROD_DESC FROM PRODUCTS_TBL
INTERSECT
SELECT PROD_DESC FROM PRODUCTS_TMP;
PROD_DESC
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
КОСТЮМ ВЕДЬМЫ
КОСТЮМЫ В АССОРТИМЕНТЕ
МАСКИ В АССОРТИМЕНТЕ
ПЛАСТИКОВЫЕ ПАУКИ
ПЛАСТИКОВЫЕ ТЫКВЫ
ПОЛОЧКА ИЗ ДУБА
СЛАДКАЯ КУКУРУЗА
ТЫКВЕННЫЕ КОНФЕТЫ
Здесь снова возвращены только 9 строк, поскольку 9 строк идентичны в выводе обоих запросов.