Учебники

17) Союз PostgreSQL

Что такое PostgreSQL Union?

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

  • Запросы SELECT ДОЛЖНЫ возвращать одинаковое количество запросов.
  • Типы данных всех соответствующих столбцов должны быть совместимы.

Оператор UNION обычно используется для объединения данных из связанных таблиц, которые не были полностью нормализованы.

В этом уроке по PostgreSQL вы узнаете:

Синтаксис

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Вот объяснение вышеуказанных параметров:

Выражение_1, выражение_2, … выражение_n — это вычисления или столбцы, которые необходимо получить.

Таблицы — это таблицы, из которых вам нужно получить записи.

Условия WHERE — это условия, которые должны быть выполнены для получения записей.

Обратите внимание: поскольку оператор UNION не возвращает дубликаты, использование UNION DISTINCT не повлияет на результаты.

союз

Оператор UNION удаляет дубликаты. Давайте продемонстрируем это.

У нас есть база данных с именем Demo со следующими таблицами:

Книга:

Цена:

Давайте запустим следующую команду:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Команда вернет следующее:

Столбец id отображается в таблицах Book и Price. Тем не менее, он появляется только один раз в результате. Причина в том, что оператор PostgreSQL UNION не возвращает дубликаты.

Союз всех

Этот оператор объединяет наборы результатов из более чем одного оператора SELECT без удаления дубликатов. Оператор требует, чтобы каждый оператор SELECT имел одинаковое количество полей в наборах результатов схожих типов данных.

Синтаксис:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Вот объяснение вышеуказанных параметров:

Выражение_1, выражение_2, … выражение_n — это вычисления или столбцы, которые необходимо получить.

Таблицы — это таблицы, из которых вам нужно получить записи.

Условия WHERE — это условия, которые должны быть выполнены для получения записей.

Примечание. Оба выражения должны иметь одинаковое количество выражений.

Мы будем использовать следующие таблицы:

Книга:

Цена:

Запустите следующую команду:

 
SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Он должен вернуть следующее:

Дубликаты не были удалены.

СОРТИРОВАТЬ ПО

Оператор PostgreSQL UNION можно использовать вместе с предложением ORDER BY для упорядочения результатов запроса. Чтобы продемонстрировать это, мы будем использовать следующие таблицы:

Цена:

price2:

Вот команда, которая демонстрирует, как использовать оператор UNION вместе с предложением ORDER BY:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

Команда вернет следующее:

Записи были упорядочены по столбцу цен. Предложение по умолчанию упорядочивает записи в порядке возрастания. Чтобы упорядочить их в порядке убывания, добавьте предложение DESC, как показано ниже:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Команда вернет следующее:

Записи были упорядочены по столбцу цен в порядке убывания.

Когда использовать Union и когда использовать Union all?

Используйте оператор UNION, когда у вас есть несколько таблиц с похожей структурой, но по причине разделения. Это хорошо, когда вам нужно удалить / удалить дубликаты записей.

Используйте оператор UNION ALL, когда вам не нужно удалять / удалять дубликаты записей.

Использование pgAdmin

Теперь посмотрим, как все три действия выполняются с использованием pgAdmin.

союз

Чтобы сделать то же самое через pgAdmin, сделайте это:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите Базы данных.
  2. Нажмите Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Союз всех

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева щелкните Базы данных.
  2. Нажмите Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

ORDER BY

The UNION ALL operator can be combined with the ORDER BY clause to order results in the result set. For example:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

The command will return the following:

The results have been ordered.

Summary:

  • The PostgreSQL UNION operator combines results from more than one SELECT statement into one result set.
  • The UNION operator doesn’t return duplicate records.
  • To order the results, combine it with the ORDER BY clause.
  • The UNION ALL operator combines results from more than one SELECT statement into one result set.
  • The UNION ALL operator does not remove duplicates.

Download the Database used in this Tutorial