PostgreSQL Союз, Союз ВСЕХ с примерами

⚡ Умное резюме

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

  • 🔗 Комбинат: Оператор UNION объединяет строки из нескольких операторов SELECT в один результирующий набор.
  • 🧹 Дубликаты: Оператор UNION удаляет повторяющиеся строки, а UNION ALL сохраняет все совпадающие строки.
  • 📐 Правила: Каждый оператор SELECT должен возвращать одинаковое количество столбцов с совместимыми типами данных.
  • 🇧🇷 СОРТИРОВАТЬ ПО: Один оператор ORDER BY в конце сортирует объединенный набор результатов.
  • Производительность: Операция UNION ALL выполняется быстрее, потому что пропускает этап удаления дубликатов.
  • 🤖 Помощь в использовании ИИ: Искусственный интеллект-помощник выравнивает столбцы и выбирает между объединениями (UNION) и объединения всех столбцов (UNION ALL).

PostgreSQL СОЮЗ и СОЮЗ ВСЕХ

Что такое PostgreSQL Союз?

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

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

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

Синтаксис

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 не повлияет на результаты.

PostgreSQL Союз

Оператор UNION удаляет дубликаты аналогично тому, как ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ Да, это так. Давайте это продемонстрируем. У нас есть база данных с именем Demo, содержащая следующие таблицы:

Книга:

PostgreSQL Союз

Цена:

PostgreSQL Союз

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

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

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

PostgreSQL Союз

Столбец «Идентификатор» отображается как в таблице «Книга», так и в таблице «Цены». Однако в результате оно появляется только один раз. Причина в том, что PostgreSQL Оператор UNION не возвращает дубликаты.

PostgreSQL Союз Все

Этот оператор объединяет наборы результатов из нескольких операторов 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 должны содержать одинаковое количество выражений.

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

Книга:

PostgreSQL Союз Все

Цена:

PostgreSQL Союз Все

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

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

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

PostgreSQL Союз Все

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

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

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

Цена:

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

Цена2:

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

Вот команда, которая демонстрирует, как использовать оператор 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.

Как использовать PostgreSQL Объединение с использованием pgAdmin

Ниже приведена пошаговая инструкция по использованию. PostgreSQL Объединение через pgAdmin:

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

Шаг 2) В левой панели навигации нажмите «Базы данных», затем нажмите «Демоверсия».

Используйте PostgreSQL Объединение с использованием pgAdmin

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

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

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

Используйте PostgreSQL Объединение с использованием pgAdmin

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

Используйте PostgreSQL Объединение с использованием pgAdmin

Союз Все

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

Шаг 2) В левой панели навигации нажмите «Базы данных», затем нажмите «Демоверсия».

Используйте PostgreSQL Объединение всех с помощью pgAdmin

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

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

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

Используйте PostgreSQL Объединение всех с помощью pgAdmin

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

Используйте PostgreSQL Объединение всех с помощью pgAdmin

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

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

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

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

Используйте PostgreSQL ЗАКАЗАТЬ ПО с помощью pgAdmin

Результаты заказаны.

Загрузите базу данных, используемую в этом руководстве.

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

Оператор UNION ALL работает быстрее, потому что он просто объединяет строки. Оператор UNION должен отсортировать или хешировать объединенные строки для удаления дубликатов, что увеличивает накладные расходы. Когда наличие дубликатов не имеет значения, UNION ALL является более эффективным выбором.

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

Да. Названия столбцов могут отличаться, поскольку оператор UNION сопоставляет столбцы по позиции, а не по имени. Типы данных должны оставаться совместимыми, и результирующий набор использует имена столбцов из первого оператора SELECT.

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

Оператор ORDER BY сортирует итоговый объединенный результат, поэтому PostgreSQL Допускается только один оператор ORDER BY, расположенный после последнего оператора SELECT. Сортировка отдельных запросов перед этим будет бессмысленной после объединения их строк.

Искусственный интеллект, используемый такими помощниками, как GitHub Copilot, выравнивает списки столбцов в каждом запросе SELECT, отмечает несоответствующие типы данных и рекомендует использовать UNION или UNION ALL в зависимости от того, следует ли сохранять дубликаты, что снижает количество распространенных ошибок запросов.

Да. Изучив ваши таблицы и целевую задачу, ИИ-помощник может определить, возможны ли и имеют ли смысл повторяющиеся строки, а затем предложить использовать UNION ALL, когда дубликаты допустимы для повышения скорости, или UNION, когда их необходимо удалить.

Функция UNION возвращает строки, найденные в любом из запросов. Функция INTERSECT возвращает только строки, присутствующие в обоих запросах, а функция EXCEPT возвращает строки из первого запроса, но не из второго. Все три функции по умолчанию удаляют дубликаты.

Подведем итог этой публикации следующим образом: