Što je PostgreSQL Union?
Operator PostgreSQL UNION koristi se za kombiniranje skupova rezultata iz više od jedne naredbe SELECT u jedan skup rezultata. Eliminiraju se svi duplicirani retci iz rezultata SELECT naredbi. Operator UNION radi pod dva uvjeta:
- UPITI SELECT MORAJU vratiti sličan broj upita.
- Tipovi podataka svih odgovarajućih stupaca moraju biti kompatibilni.
Operator UNION obično se koristi za kombiniranje podataka iz povezanih tablica koji nisu u potpunosti normalizirani.
U ovom vodiču za PostgreSQL naučit ćete:
- Što je PostgreSQL Union?
- Sintaksa
- Unija
- Union All
- NARUČITE PO
- Kada koristiti Union i kada koristiti Union all?
- Korištenje pgAdmin
Sintaksa
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Evo objašnjenja za gornje parametre:
Izraz_1, izraz_2, ... izraz_n izračuni su ili stupci koje trebate dohvatiti.
Tablice su tablice iz kojih trebate dohvatiti zapise.
Uvjeti WHERE su uvjeti koji moraju biti ispunjeni da bi se dohvatali zapisi.
Napomena: budući da operator UNION ne vraća duplikate, upotreba UNION DISTINCT neće imati utjecaja na rezultate.
Unija
Operator UNION uklanja duplikate. Pokažimo to.
Imamo bazu podataka Demo sa sljedećim tablicama:
Knjiga:
Cijena:
Pokrenimo sljedeću naredbu:
SELECT idFROM BookUNIONSELECT idFROM Price;
Naredba će vratiti sljedeće:
Stupac id pojavljuje se u tablicama Knjiga i Cijena. Međutim, u rezultatu se pojavljuje samo jednom. Razlog je taj što operator PostgreSQL UNION ne vraća duplikate.
Union All
Ovaj operator kombinira skupove rezultata iz više od jedne naredbe SELECT bez uklanjanja duplikata. Operator zahtijeva da svaki izraz SELECT ima sličan broj polja u skupovima rezultata sličnih vrsta podataka.
Sintaksa:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Evo objašnjenja za gornje parametre:
Izraz_1, izraz_2, ... izraz_n izračuni su ili stupci koje trebate dohvatiti.
Tablice su tablice iz kojih trebate dohvatiti zapise.
Uvjeti WHERE su uvjeti koji moraju biti ispunjeni da bi se dohvatali zapisi.
Napomena: Oba izraza moraju imati jednak broj izraza.
Koristit ćemo sljedeće tablice:
Knjiga:
Cijena:
Pokrenite sljedeću naredbu:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Trebao bi vratiti sljedeće:
Duplikati nisu uklonjeni.
NARUČITE PO
Operator PostgreSQL UNION može se koristiti zajedno s klauzulom ORDER BY za naručivanje rezultata upita. Da bismo to demonstrirali, poslužit ćemo se sljedećim tablicama:
Cijena:
Cijena2:
Evo naredbe koja pokazuje kako se koristi operator UNION zajedno s klauzulom ORDER BY:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Naredba će vratiti sljedeće:
Evidencije su poredane prema stupcu cijena. Klauzula prema zadanim postavkama raspoređuje zapise u rastućem redoslijedu. Da biste ih poredali silaznim redoslijedom, dodajte DESC klauzulu kako je prikazano dolje:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Naredba će vratiti sljedeće:
Evidencije su poredane na temelju stupca cijena u padajućem redoslijedu.
Kada koristiti Union i kada koristiti Union all?
Koristite operator UNION kada imate više tablica sa sličnom strukturom, ali podijeljene s razlogom. Dobro je kad trebate ukloniti / ukloniti duplicirane zapise.
Koristite UNION ALL operator kada ne trebate uklanjati / uklanjati duplicirane zapise.
Korištenje pgAdmin
Sada da vidimo kako su se sve tri radnje izvršile pomoću pgAdmina.
Unija
Da biste to postigli putem pgAdmina, učinite ovo:
Korak 1) Prijavite se na svoj pgAdmin račun.
Korak 2)
- Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
- Pritisnite Demo.
Korak 3) Upišite upit u uređivač upita:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Korak 4) Kliknite gumb Izvrši.
Trebao bi vratiti sljedeće:
Union All
Korak 1) Prijavite se na svoj pgAdmin račun.
Korak 2)
- Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
- Pritisnite Demo.
Korak 3) Upišite upit u uređivač upita:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Korak 4) Kliknite gumb Izvrši.
Trebao bi vratiti sljedeće:
NARUČITE PO
Operator UNION ALL može se kombinirati s klauzulom ORDER BY za naručivanje rezultata u skupu rezultata. Na primjer:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Naredba će vratiti sljedeće:
Rezultati su naručeni.
Sažetak:
- PostgreSQL UNION operator kombinira rezultate iz više od jedne naredbe SELECT u jedan skup rezultata.
- Operator UNION ne vraća dvostruke zapise.
- Da biste poredali rezultate, kombinirajte ga s klauzulom ORDER BY.
- Operator UNION ALL kombinira rezultate iz više od jedne naredbe SELECT u jedan skup rezultata.
- Operator UNION ALL ne uklanja duplikate.
Preuzmite bazu podataka korištenu u ovom vodiču