Что такое PostgreSQL Union?
Оператор PostgreSQL UNION используется для объединения наборов результатов из более чем одного оператора SELECT в один набор результатов. Любые повторяющиеся строки из результатов операторов SELECT удаляются. Оператор UNION работает при двух условиях:
- Запросы SELECT ДОЛЖНЫ возвращать аналогичное количество запросов.
- Типы данных всех соответствующих столбцов должны быть совместимы.
Оператор UNION обычно используется для объединения данных из связанных таблиц, которые не были полностью нормализованы.
В этом руководстве по PostgreSQL вы узнаете:
- Что такое PostgreSQL Union?
- Синтаксис
- Союз
- Союз Все
- СОРТИРОВАТЬ ПО
- Когда использовать Union и когда использовать Union all?
- Использование pgAdmin
Синтаксис
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Вот объяснение вышеуказанных параметров:
Выражение_1, выражение_2,… выражение_n - это вычисления или столбцы, которые вам нужно получить.
Таблицы - это таблицы, из которых вам нужно получить записи.
Условия WHERE - это условия, которые должны быть выполнены для извлечения записей.
Примечание: поскольку оператор UNION не возвращает дубликатов, использование UNION DISTINCT не повлияет на результаты.
Союз
Оператор UNION удаляет дубликаты. Продемонстрируем это.
У нас есть база данных Demo со следующими таблицами:
Книга:
Цена:
Запустим следующую команду:
SELECT idFROM BookUNIONSELECT idFROM Price;
Команда вернет следующее:
Столбец id появляется как в таблице Book, так и в таблице Price. Однако в результате он появляется только один раз. Причина в том, что оператор PostgreSQL UNION не возвращает дубликатов.
Союз Все
Этот оператор объединяет наборы результатов из более чем одного оператора SELECT без удаления дубликатов. Оператор требует, чтобы каждый оператор SELECT имел одинаковое количество полей в наборах результатов с похожими типами данных.
Синтаксис:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Вот объяснение вышеуказанных параметров:
Выражение_1, выражение_2,… выражение_n - это вычисления или столбцы, которые вам нужно получить.
Таблицы - это таблицы, из которых вам нужно получить записи.
Условия WHERE - это условия, которые должны быть выполнены для извлечения записей.
Примечание. Оба выражения должны иметь равное количество выражений.
Мы будем использовать следующие таблицы:
Книга:
Цена:
Выполните следующую команду:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Он должен вернуть следующее:
Дубликаты не удалены.
СОРТИРОВАТЬ ПО
Оператор PostgreSQL UNION можно использовать вместе с предложением ORDER BY для упорядочивания результатов запроса. Чтобы продемонстрировать это, мы будем использовать следующие таблицы:
Цена:
Цена2:
Вот команда, демонстрирующая, как использовать оператор UNION вместе с предложением ORDER BY:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Команда вернет следующее:
Записи отсортированы по столбцу цен. Предложение по умолчанию упорядочивает записи в порядке возрастания. Чтобы отсортировать их по убыванию, добавьте предложение DESC, как показано ниже:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Команда вернет следующее:
Записи отсортированы по столбцу цен в порядке убывания.
Когда использовать Union и когда использовать Union all?
Используйте оператор UNION, когда у вас есть несколько таблиц с похожей структурой, но разделенных по какой-то причине. Это хорошо, когда нужно удалить / устранить повторяющиеся записи.
Используйте оператор UNION ALL, когда вам не нужно удалять / устранять повторяющиеся записи.
Использование pgAdmin
Теперь посмотрим, как выполняются все три действия с помощью pgAdmin.
Союз
Чтобы сделать то же самое с помощью pgAdmin, сделайте следующее:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите «Базы данных».
- Щелкните Демо.
Шаг 3) Введите запрос в редакторе запросов:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Шаг 4) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
Союз Все
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева щелкните Базы данных.
- Щелкните Демо.
Шаг 3) Введите запрос в редакторе запросов:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Шаг 4) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
СОРТИРОВАТЬ ПО
Оператор UNION ALL можно комбинировать с предложением ORDER BY для упорядочивания результатов в наборе результатов. Например:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Команда вернет следующее:
Результаты заказаны.
Резюме:
- Оператор PostgreSQL UNION объединяет результаты более чем одного оператора SELECT в один набор результатов.
- Оператор UNION не возвращает повторяющиеся записи.
- Чтобы упорядочить результаты, объедините его с предложением ORDER BY.
- Оператор UNION ALL объединяет результаты более чем одного оператора SELECT в один набор результатов.
- Оператор UNION ALL не удаляет дубликаты.
Загрузите базу данных, используемую в этом руководстве