PostgreSQL Unija, Unija SVE s primjerima

⚡ Pametni sažetak

PostgreSQL UNION kombinira rezultate dvije ili više SELECT naredbi u jedan skup rezultata i uklanja duplikate, dok UNION ALL zadržava svaki redak, što daje bržu opciju kada duplikati nisu važni.

  • 🔗 Kombinirati: UNION spaja retke iz više SELECT naredbi u jedan skup rezultata.
  • 🧹 Duplikati: UNION uklanja duplicirane retke, dok UNION ALL zadržava sve odgovarajuće retke.
  • 📐 Pravila: Svaki SELECT mora vratiti isti broj stupaca s kompatibilnim tipovima podataka.
  • ↕️ REDAJ PO: Jedan ORDER BY na kraju sortira kombinirani skup rezultata.
  • Performance: UNION ALL radi brže jer preskače korak uklanjanja duplikata.
  • 🤖 Pomoć za umjetnu inteligenciju: AI asistenti poravnavaju stupce i biraju između UNION i UNION ALL.

PostgreSQL UNIJA i UNIJA SVE

Što je PostgreSQL Unija?

The PostgreSQL Operator UNION koristi se za kombiniranje skupova rezultata iz više od jedne naredbe SELECT u jedan skup rezultata. Svi duplicirani retci iz rezultata SELECT izjava su eliminirani. Operator UNION radi pod dva uvjeta:

  • SELECT upiti moraju vratiti isti broj stupaca.
  • Tipovi podataka svih odgovarajućih stupaca moraju biti kompatibilni.

Operator UNION obično se koristi za kombiniranje podataka iz povezanih tablica koje nisu savršeno normalizirane.

Sintaksa

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)];

Evo objašnjenja za gore navedene parametre:

Izraz_1, izraz_2, … izraz_n su izračuni ili stupci koje trebate dohvatiti.

Tablice su tablice iz kojih trebate dohvatiti zapise.

WHERE uvjet(i) su uvjeti koji moraju biti ispunjeni da bi se zapisi mogli dohvatiti.

Bilješka: Budući da operator UNION ne vraća duplikate, korištenje operatora UNION DISTINCT neće imati utjecaja na rezultate.

PostgreSQL Unija

Operator UNION uklanja duplikate na isti način kao ODABIR DISTINCT radi. Demonstrirajmo to. Imamo bazu podataka pod nazivom Demo sa sljedećim tablicama:

Rezervirati:

PostgreSQL Unija

Cijena:

PostgreSQL Unija

Pokrenimo sljedeću naredbu:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Naredba će vratiti sljedeće:

PostgreSQL Unija

Stupac ID pojavljuje se u tablicama Knjiga i Cijena. Međutim, pojavljuje se samo jednom u rezultatu. Razlog je taj PostgreSQL Operator UNION ne vraća duplikate.

PostgreSQL Unija sv

Ovaj operator kombinira skupove rezultata iz više od jedne naredbe SELECT bez uklanjanja duplikata. Operator zahtijeva da svaka izjava SELECT ima sličan broj polja u skupovima rezultata sličnih tipova podataka.

Sintaksa:

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)];

Evo objašnjenja za gore navedene parametre:

Izraz_1, izraz_2, … izraz_n su izračuni ili stupci koje trebate dohvatiti.

Tablice su tablice iz kojih trebate dohvatiti zapise.

WHERE uvjet(i) su uvjeti koji moraju biti ispunjeni da bi se zapisi mogli dohvatiti.

Bilješka: Obje SELECT naredbe moraju imati jednak broj izraza.

Koristit ćemo sljedeće tablice:

Rezervirati:

PostgreSQL Unija sv

Cijena:

PostgreSQL Unija sv

Pokrenite sljedeću naredbu:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Trebao bi vratiti sljedeće:

PostgreSQL Unija sv

Duplikati nisu uklonjeni.

NARUČITE PO

The PostgreSQL Operator UNION može se koristiti zajedno s klauzulom ORDER BY za poredak rezultata upita. Da bismo to demonstrirali, koristit ćemo se sljedećim tablicama:

Cijena:

NARUČITE PO

Cijena2:

NARUČITE PO

Evo naredbe koja pokazuje kako koristiti operator UNION zajedno s klauzulom ORDER BY:

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

Naredba će vratiti sljedeće:

NARUČITE PO

Zapisi su poredani prema stupcu cijena. Klauzula prema zadanim postavkama raspoređuje zapise uzlaznim redoslijedom. Da biste ih poredali silaznim redoslijedom, dodajte klauzulu DESC kao što je prikazano u nastavku:

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

Naredba će vratiti sljedeće:

NARUČITE PO

Zapisi su poredani na temelju stupca cijena silaznim redoslijedom.

Kada koristiti Union, a kada Union All?

Koristite operator UNION kada imate više tablica sa sličnom strukturom, ali podijeljenih s razlogom. Dobar je kada trebate ukloniti ili eliminirati duplicirane zapise.

Koristite operator UNION ALL kada ne trebate ukloniti ili eliminirati duplicirane zapise.

Koristeći pgAdmin

Sada pogledajmo kako se sve tri radnje izvode pomoću pgAdmin-a.

Kako koristiti PostgreSQL Unija pomoću pgAdmin-a

Slijedi korak-po-korak postupak o tome kako ga koristiti PostgreSQL UNION putem pgAdmin-a:

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2) Na navigacijskoj traci s lijeve strane kliknite Baze podataka, a zatim kliknite Demo.

Koristiti PostgreSQL Unija pomoću pgAdmin-a

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

Koristiti PostgreSQL Unija pomoću pgAdmin-a

Trebao bi vratiti sljedeće:

Koristiti PostgreSQL Unija pomoću pgAdmin-a

Unija sv

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2) Na navigacijskoj traci s lijeve strane kliknite Baze podataka, a zatim kliknite Demo.

Koristiti PostgreSQL Ujedini sve koristeći pgAdmin

Korak 3) Unesite upit u uređivač upita:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Korak 4) Pritisnite gumb Izvrši.

Koristiti PostgreSQL Ujedini sve koristeći pgAdmin

Trebao bi vratiti sljedeće:

Koristiti PostgreSQL Ujedini sve koristeći pgAdmin

NARUČITE PO

Operator UNION ALL može se kombinirati s klauzulom ORDER BY za poredak rezultata u skupu rezultata. Na primjer:

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

Naredba će vratiti sljedeće:

Koristiti PostgreSQL NARUDŽAJ Upotrebom pgAdmin-a

Rezultati su naručeni.

Preuzmite bazu podataka korištenu u ovom vodiču

Pitanja i odgovori

UNION ALL je brži jer jednostavno spaja retke. UNION mora sortirati ili hashirati kombinirane retke kako bi uklonio duplikate, što dodaje opterećenje. Kada duplikati nisu važni, UNION ALL je učinkovitiji izbor.

Da. Svaki SELECT u UNION-u mora vratiti isti broj stupaca, a odgovarajući stupci moraju imati kompatibilne tipove podataka u istom redoslijedu. Inače PostgreSQL javlja grešku i upit ne uspijeva.

Da. Nazivi stupaca mogu se razlikovati jer UNION spaja stupce po položaju, a ne po nazivu. Tipovi podataka i dalje moraju biti kompatibilni, a skup rezultata koristi nazive stupaca iz prve SELECT naredbe.

UNION slaže retke dvaju skupova rezultata okomito u jedan popis stupaca, uklanjajući duplikate. JOIN kombinira stupce iz različitih tablica vodoravno na temelju povezanog ključa, pa proširuje retke umjesto da ih dodaje.

ORDER BY sortira konačni kombinirani rezultat, dakle PostgreSQL dopušta samo jedan ORDER BY postavljen nakon zadnjeg SELECT-a. Sortiranje pojedinačnih upita prvo ne bi imalo smisla nakon što se njihovi retci spoje.

AI asistenti poput GitHub Copilota poravnavaju popise stupaca svakog SELECT-a, označavaju neusklađene tipove podataka i preporučuju UNION ili UNION ALL na temelju toga treba li zadržati duplikate, smanjujući uobičajene pogreške u upitima.

Da. Pregledom vaših tablica i cilja, AI asistent može utvrditi jesu li duplicirani retci mogući i smisleni, a zatim predložiti UNION ALL kada su duplikati prihvatljivi radi ubrzanja ili UNION kada ih je potrebno ukloniti.

UNION vraća retke pronađene u bilo kojem upitu. INTERSECT vraća samo retke prisutne u oba upita, a EXCEPT vraća retke u prvom upitu, ali ne i u drugom. Sva tri prema zadanim postavkama uklanjaju duplikate.

Sažmite ovu objavu uz: