Команда EXCEPT
Команда EXCEPT комбинирует результаты двух операторов SELECT таким образом, что в вывод попадают те строки первого запроса, которым нет аналогов во втором запросе. Правила использования команды EXCEPT аналогичны правилам использования команды UNION.
Синтаксис оператора с использованием команды EXCEPT должен быть следующим.
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
EXCEPT
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
Рассмотрим пример.
SELECT PROD_DESC FROM PRODUCTS_TBL
EXCEPT
SELECT PROD_DESC FROM PRODUCTS_TMP;
PROD_DESC
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ
ПОЛОЧКА ИЗ ДУБА
Результаты вывода показывают, что имеется две строки данных, возвращенные первым запросом, но не возвращенные вторым
В некоторых реализациях SQL вместо команды EXCEPT используется команда MINUS. Проверьте по документации используемой вами реализации языка, какая именно команда используется в нем для представления функции команды EXCEPT
SELECT PROD_DESC FROM PRODUCTS_TBL
MINUS
SELECT PROD_DESC FROM PRODUCTS_TMP;
PROD_DESC
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ
ПОЛОЧКА ИЗ ДУБА
В составных запросах можно использовать ключевое слово ORDER BY. Однако ключевое слово ORDER BY в них можно использовать только для упорядочения результатов окончательного вывода обоих запросов. Поэтому в составном запросе допускается использовать только одно выражение с ключевым словом ORDER BY, хотя сам составной запрос может состоять из нескольких операторов SELECT. На столбцы в выражении ключевого слова ORDER BY можно ссылаться как по псевдонимам, так и по их номерам в списке выбора.
|
|
Синтаксис оператора с использованием ORDER BY должен быть следующим
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
КОМАНДА{UNION | EXCEPT INTERSECT | UNION ALL}
SELECT столбец1 [, столбец2 ] FROM таблица1 [, таблица2 ] [ WHERE ]
[ ORDER BY ]
Рассмотрим пример
SELECT EMP_ID FROM EMPLOYEE_TBL
UNION
SELECT EMP_ID FROM EMPLOYEE_PAY_TBL
ORDER BY 1;
В результате вывод этого составного запроса будет упорядочен по первому столбцу каждого из составляющих запросов. С помощью сортировки в составном запросе легко выявить повторяющиеся строки.
Этот оператор SQL возвращает упорядоченный список табельных номеров служащих из таблиц EMPLOYEE_TBL и EMPLOYEE_PAY_TBL без повторений.
Обратите внимание на то, что здесь выражение ключевого слова ORDER BY ссылается на столбец по номеру 1, а не по имени.
В следующем примере показано использование ключевого слова ORDER BY в составном запросе с реальными данными. В выражении ключевого слова ORDER BY можно использовать имя столбца, если этот столбец присутствует и имеет одно и то же имя в каждом из составляющих оператор запросов.
SELECT PROD_DESC FROM PRODUCTS_TBL
UNION
SELECT PROD_DESC FROM PRODUCTS_TBL
ORDER BY PROD_DESC;
PROD_DESC
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
КОСТЮМ ВЕДЬМЫ
КОСТЮМЫ В АССОРТИМЕНТЕ
|
|
МАСКИ В АССОРТИМЕНТЕ
ПЛАСТИКОВЫЕ ПАУКИ
ПЛАСТИКОВЫЕ ТЫКВЫ
ПОЛОЧКА ИЗ ДУБА
СЛАДКАЯ КУКУРУЗА
ТЫКВЕННЫЕ КОНФЕТЫ
ФОНАРИ
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ
В следующем примере вместо имени столбца для сортировки использован его номер
SELECT PROD_DESC FROM PRODUCTS_TBL
UNION
SELECT PROD_DESC FROM PRODUCTS_TBL
ORDER BY 1;
PROD_DESC
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
КОСТЮМ ВЕДЬМЫ
КОСТЮМЫ В АССОРТИМЕНТЕ
МАСКИ В АССОРТИМЕНТЕ
ПЛАСТИКОВЫЕ ПАУКИ
ПЛАСТИКОВЫЕ ТЫКВЫ
ПОЛОЧКА ИЗ ДУБА
СЛАДКАЯ КУКУРУЗА
ТЫКВЕННЫЕ КОНФЕТЫ
ФОНАРИ
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ