UNION ОПЕРАТОР

В этом учебном материале вы узнаете, как использовать Oracle оператор UNION с синтаксисом и примерами.

Описание

Oracle оператор UNION используется для объединения наборов результатов из 2-х или более Oracle запросов SELECT. Он удаляет повторяющиеся строки между различными запросами SELECT.

Каждый запрос SELECT внутри оператора UNION должен иметь одинаковое количество полей в результирующих наборах с одинаковыми типами данных.

Синтаксис

Синтаксис оператора UNION в Oracle/PLSQL:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

Параметры или аргументы

expression1, expression2, expression_n - Столбцы или расчеты, которые вы хотите получить.
tables - Таблицы из которых вы хотите получить записи.
WHERE conditions - Необязательный. Условия, которые должны быть выполнены для выбранных записей.

Примечание

  • В обоих запросах SELECT должно быть одинаковое количество выражений.

Пример с одним полем

Следующий пример Oracle оператора UNION, возвращает одно поле из двух запросов SELECT (и оба поля имеют один и тот же тип данных):

В этом примере оператора UNION, если supplier_id присутствует в обоих таблицах suppliers и order_details, то supplier_id появляется один в наборе результатов. Оператор Oracle UNION удаляет дубликаты. Если вы не хотите, чтобы дубликаты были удалены, попробуйте использовать Oracle оператора UNION ALL.

Пример использования ORDER BY

Oracle оператор UNION может использовать оператор ORDER BY, чтобы упорядочить результаты запроса.

Например:

В этом примере UNION, так как имена столбцов в двух запросах SELECT отличаются, то в ORDER BY выгоднее ссылаться на положение столбцов в результирующем наборе. В этом примере, мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как это обозначено в ORDER BY 2.

Поля supplier_name / company_name находятся в позиции # 2 в результирующем наборе.

Часто задаваемые вопросы

Вопрос: Мне нужно сравнить две даты и вернуть количество строк поля, основанного на значении дат. Например, у меня есть в таблице поле даты, которое называется дата последнего обновления. Я должен проверить, если TRUNC (last_updated_date)> = TRUNC (Sysdate-13).

Ответ: Поскольку вы используете функцию COUNT, которая является агрегатной функцией, то мы рекомендуем использовать Oracle оператор UNION. Например, вы можете попробовать следующее:

Oracle оператор UNION позволит выполнить подсчет на основе одного набора критериев.

TRUNC(last_updated_date) <= TRUNC(sysdate-13)

А также выполнить подсчет на основе другого набора критериев.

TRUNC(last_updated_date) > TRUNC(sysdate-13)