PostgreSQL Union, Union ALL з прикладами

Зміст:

Anonim

Що таке 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 відображається як у таблицях "Книга", так і у "Ціна". Однак воно з’являється лише один раз у результаті. Причина полягає в тому, що оператор 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)

  1. На панелі навігації ліворуч клацніть Бази даних.
  2. Клацніть Демо.

Крок 3) Введіть запит у редакторі запитів:

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

Крок 4) Натисніть кнопку Виконати.

Він повинен повернути наступне:

Союз усіх

Крок 1) Увійдіть до свого облікового запису pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч клацніть Бази даних.
  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 не видаляє дублікати.

Завантажте базу даних, що використовується у цьому посібнику