PostgreSQL оператор UNION

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

Описание

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

Синтаксис

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

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

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

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

Примечание

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

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

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

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

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

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

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