Какво е 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, ... израз_н са изчисленията или колоните, които трябва да извлечете.
Таблиците са таблиците, от които трябва да извлечете записи.
УСЛОВЕТО 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, ... израз_н са изчисленията или колоните, които трябва да извлечете.
Таблиците са таблиците, от които трябва да извлечете записи.
УСЛОВЕТО 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 не премахва дубликати.
Изтеглете базата данни, използвана в този урок