Що таке 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)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 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 не видаляє дублікати.
Завантажте базу даних, що використовується у цьому посібнику