В этом учебном материале вы узнаете, как использовать Oracle оператор UNION ALL с синтаксисом и примерами.
Описание
Oracle оператор UNION ALL используется для объединения наборов результатов 2-х или более SELECT запросов. Он возвращает все строки из запроса и не удаляет повторяющиеся строки между различными запросами SELECT.
Каждый SELECT запрос в Oracle операторе UNION ALL должен иметь одинаковое количество полей в результирующем наборе с аналогичными типами данных.
Синтаксис
Синтаксис оператора UNION ALL в Oracle/PLSQL:
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Параметры или аргументы
expression1, expression2, ... expression_n
Столбцы или расчеты, которые вы хотите получить.
tables
Таблицы, из которых вы хотите получить записи.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для выбранных записей.
Примечание
В обоих запросах SELECT должно быть одинаковое количество столбцов.
Пример выборки одного поля
Ниже приведен пример Oracle оператора UNION ALL, который возвращает одно поле из множества SELECT (и оба поля имеют один и тот же тип данных):
1 2 3 4 5 |
SELECT supplier_id FROM suppliers UNION ALL SELECT supplier_id FROM orders; |
Этот пример Oracle оператора UNION ALL вернет множество записей supplier_id в результирующем наборе, т.к. supplier_id находится в обоих таблицах suppliers и orders. Oracle оператор UNION ALL не удалит дубликаты. Если вы хотите, чтобы дубликаты были удалены, попробуйте использовать оператор Oracle UNION.
Пример использования ORDER BY
Oracle оператор UNION ALL может использовать ORDER BY, чтобы упорядочить результаты запроса.
Например:
1 2 3 4 5 6 7 8 |
SELECT supplier_id, supplier_name FROM suppliers WHERE state = 'California' UNION ALL SELECT company_id, company_name FROM companies WHERE company_id > 1000 ORDER BY 2; |
В этом Oracle операторе UNION ALL, так как имена столбцов в двух запросах SELECT отличаются, то в операторе ORDER BY выгоднее ссылаться на положение столбцов в результирующем наборе. В этом примере, мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как это обозначено в ORDER BY 2.
Поля supplier_name / company_name находятся в позиции # 2 в результирующем наборе.