PostgreSQL оператор UNION ALL

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

Описание

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

Синтаксис

Синтаксис для оператора UNION ALL в PostgreSQL:

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

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

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

Примечание

  • В обоих операторах SELECT должно быть одинаковое количество выражений.
  • Имена столбцов из первого оператора SELECT используются в качестве имен столбцов для набора результатов.

Пример - возврат одного поля

Ниже приведен пример PostgreSQL оператора UNION ALL, который возвращает одно поле из нескольких операторов SELECT (и оба поля имеют одинаковый тип данных):

Этот оператор PostgreSQL UNION ALL будет возвращать category_id несколько раз в вашем результирующем наборе, если category_id присутствует в таблицах categories и products. Оператор PostgreSQL UNION ALL не удаляет дубликаты. Если вы хотите удалить дубликаты, попробуйте использовать PostgreSQL оператор UNION.

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

PostgreSQL оператор UNION ALL может использовать оператор ORDER BY для упорядочивания результатов.
Например:

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