double arrow

Использование ORDER BY в составных запросах

Команда 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

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ

КОСТЮМ ВЕДЬМЫ

КОСТЮМЫ В АССОРТИМЕНТЕ

МАСКИ В АССОРТИМЕНТЕ

ПЛАСТИКОВЫЕ ПАУКИ

ПЛАСТИКОВЫЕ ТЫКВЫ

ПОЛОЧКА ИЗ ДУБА

СЛАДКАЯ КУКУРУЗА

ТЫКВЕННЫЕ КОНФЕТЫ

ФОНАРИ

ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ


Сейчас читают про: