PostgreSQL Unioni, unioni KAIKKI esimerkkeineen

โšก ร„lykรคs yhteenveto

PostgreSQL UNION yhdistรครค kahden tai useamman SELECT-lausekkeen tulokset yhdeksi tulosjoukoksi ja poistaa kaksoiskappaleet, kun taas UNION ALL sรคilyttรครค kaikki rivit, mikรค on nopeampi vaihtoehto, kun kaksoiskappaleilla ei ole merkitystรค.

  • ๐Ÿ”— Yhdistรครค: UNION yhdistรครค useiden SELECT-lauseiden rivit yhdeksi tulosjoukoksi.
  • ๐Ÿงน Kaksoiskappaleet: UNION poistaa pรครคllekkรคiset rivit, kun taas UNION ALL sรคilyttรครค kaikki vastaavat rivit.
  • ๐Ÿ“ Sรครคnnรถt: Jokaisen SELECT-funktion on palautettava sama mรครคrรค sarakkeita, joilla on yhteensopivat tietotyypit.
  • โ†•๏ธ TILAUS: Yksi ORDER BY -merkintรค lopussa lajittelee yhdistetyn tulosjoukon.
  • โšก Suorituskyky: UNION ALL toimii nopeammin, koska se ohittaa kaksoiskappaleiden poistovaiheen.
  • ๐Ÿค– Tekoรคlyn apu: Tekoรคlyavustajat tasaavat sarakkeet ja valitsevat UNION- ja UNION ALL -vaihtoehtojen vรคlillรค.

PostgreSQL UNIONIN ja UNIONIN KAIKKI

Mikรค on PostgreSQL Liitto?

PostgreSQL UNION-operaattoria kรคytetรครคn useamman kuin yhden SELECT-lauseen tulosjoukkojen yhdistรคmiseen yhdeksi tulosjoukoksi. Kaikki pรครคllekkรคiset rivit SELECT-lausekkeiden tuloksista poistetaan. UNION-operaattori toimii kahdella ehdolla:

  • SELECT-kyselyiden on palautettava sama mรครคrรค sarakkeita.
  • Kaikkien vastaavien sarakkeiden tietotyyppien on oltava yhteensopivia.

UNION-operaattoria kรคytetรครคn tavallisesti yhdistรคmรครคn tietoja toisiinsa liittyvistรค taulukoista, joita ei ole normalisoitu tรคydellisesti.

Syntaksi

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

Tรคssรค on selitys yllรค oleville parametreille:

Lauseke_1, lauseke_2, โ€ฆ lauseke_n ovat laskelmia tai sarakkeita, jotka sinun on noudettava.

Taulukot ovat taulukoita, joista sinun on haettava tietueita.

WHERE-ehdot ovat ehdot, jotka on tรคytettรคvรค, jotta tietueet voidaan noutaa.

Huomautus: Koska UNION-operaattori ei palauta kaksoiskappaleita, UNION DISTINCT -operaattorin kรคytรถllรค ei ole vaikutusta tuloksiin.

PostgreSQL Liitto

UNION-operaattori poistaa kaksoiskappaleet samalla tavalla kuin SELECT DISTINCT tekee. Osoitetaanpa tรคmรค. Meillรค on tietokanta nimeltรค Demo, jossa on seuraavat taulukot:

Kirja:

PostgreSQL Liitto

Hinta:

PostgreSQL Liitto

Suoritetaan seuraava komento:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Komento palauttaa seuraavan:

PostgreSQL Liitto

Id-sarake nรคkyy sekรค Kirja- ettรค Hinta-taulukoissa. Se nรคkyy kuitenkin vain kerran tuloksessa. Syynรค on se PostgreSQL UNION-operaattori ei palauta kaksoiskappaleita.

PostgreSQL Unioni Kaikki

Tรคmรค operaattori yhdistรครค tulosjoukot useammasta kuin yhdestรค SELECT-kรคskystรค poistamatta kaksoiskappaleita. Operaattori edellyttรครค, ettรค jokaisessa SELECT-lauseessa on samanlainen mรครคrรค kenttiรค samantyyppisissรค tulosjoukoissa.

Syntaksi:

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

Tรคssรค on selitys yllรค oleville parametreille:

Lauseke_1, lauseke_2, โ€ฆ lauseke_n ovat laskelmia tai sarakkeita, jotka sinun on noudettava.

Taulukot ovat taulukoita, joista sinun on haettava tietueita.

WHERE-ehdot ovat ehdot, jotka on tรคytettรคvรค, jotta tietueet voidaan noutaa.

Huomautus: Molemmissa SELECT-lausekkeissa on oltava yhtรค monta lauseketta.

Kรคytรคmme seuraavia taulukoita:

Kirja:

PostgreSQL Unioni Kaikki

Hinta:

PostgreSQL Unioni Kaikki

Suorita seuraava komento:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Sen pitรคisi palauttaa seuraavat tiedot:

PostgreSQL Unioni Kaikki

Kaksoiskappaleita ei ole poistettu.

TILAUS

PostgreSQL UNION-operaattoria voidaan kรคyttรครค yhdessรค ORDER BY -lauseen kanssa kyselyn tulosten jรคrjestรคmiseen. Tรคmรคn osoittamiseksi kรคytรคmme seuraavia taulukoita:

Hinta:

TILAUS

Hinta2:

TILAUS

Tรคssรค on komento, joka nรคyttรครค kuinka UNION-operaattoria kรคytetรครคn yhdessรค ORDER BY -lauseen kanssa:

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

Komento palauttaa seuraavan:

TILAUS

Tietueet jรคrjestettiin hintasarakkeen mukaan. Lause jรคrjestรครค tietueet oletusarvoisesti nousevaan jรคrjestykseen. Jรคrjestรค ne laskevassa jรคrjestyksessรค lisรครคmรคllรค DESC-lauseke alla olevan kuvan mukaisesti:

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

Komento palauttaa seuraavan:

TILAUS

Tietueet on jรคrjestetty hintasarakkeen perusteella laskevassa jรคrjestyksessรค.

Milloin kรคyttรครค Unionia ja milloin kรคyttรครค Union All -toimintoa?

Kรคytรค UNION-operaattoria, kun sinulla on useita taulukoita, joilla on samanlainen rakenne, mutta jotka on jaettu jostain syystรค. Se on hyvรค vaihtoehto, kun sinun on poistettava tai hรคvitettรคvรค pรครคllekkรคisiรค tietueita.

Kรคytรค UNION ALL -operaattoria, kun sinun ei tarvitse poistaa tai hรคvittรครค pรครคllekkรคisiรค tietueita.

pgAdminin avulla

Katsotaanpa nyt, miten kaikki kolme toimintoa suoritetaan pgAdminilla.

Kuinka kรคyttรครค PostgreSQL Unioni kรคyttรคmรคllรค pgAdminia

Seuraavassa on vaiheittainen opas laitteen kรคyttรถรถn PostgreSQL UNION pgAdminin kautta:

Vaihe 1) Kirjaudu sisรครคn pgAdmin-tilillesi.

Vaihe 2) Valitse vasemmalla olevasta navigointipalkista Tietokannat ja sitten Demo.

Kรคyttรครค PostgreSQL Unioni kรคyttรคmรคllรค pgAdminia

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

Kรคyttรครค PostgreSQL Unioni kรคyttรคmรคllรค pgAdminia

Sen pitรคisi palauttaa seuraavat tiedot:

Kรคyttรครค PostgreSQL Unioni kรคyttรคmรคllรค pgAdminia

Unioni Kaikki

Vaihe 1) Kirjaudu sisรครคn pgAdmin-tilillesi.

Vaihe 2) Valitse vasemmalla olevasta navigointipalkista Tietokannat ja sitten Demo.

Kรคyttรครค PostgreSQL Union All kรคyttรคen pgAdminia

Vaihe 3) Kirjoita kysely kyselyeditoriin:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Vaihe 4) Napsauta Suorita-painiketta.

Kรคyttรครค PostgreSQL Union All kรคyttรคen pgAdminia

Sen pitรคisi palauttaa seuraavat tiedot:

Kรคyttรครค PostgreSQL Union All kรคyttรคen pgAdminia

TILAUS

UNION ALL -operaattori voidaan yhdistรครค ORDER BY -lauseeseen, jotta tulokset jรคrjestyvรคt tulosjoukossa. Esimerkiksi:

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

Komento palauttaa seuraavan:

Kรคyttรครค PostgreSQL TILAA kรคyttรคmรคllรค pgAdminia

Tulokset on tilattu.

Lataa tรคssรค opetusohjelmassa kรคytetty tietokanta

UKK

UNION ALL on nopeampi, koska se yksinkertaisesti ketjuttaa rivit. UNIONin on lajiteltava tai tiivistettรคvรค yhdistetyt rivit kaksoiskappaleiden poistamiseksi, mikรค lisรครค tyรถmรครคrรครค. Kun kaksoiskappaleilla ei ole merkitystรค, UNION ALL on tehokkaampi vaihtoehto.

Kyllรค. Jokaisen UNION-lausekkeen SELECT-lauseen on palautettava sama mรครคrรค sarakkeita, ja vastaavien sarakkeiden tietotyyppien on oltava yhteensopivat samassa jรคrjestyksessรค. Muussa tapauksessa PostgreSQL aiheuttaa virheen ja kysely epรคonnistuu.

Kyllรค. Sarakkeiden nimet voivat poiketa toisistaan, koska UNION-operaattori lรถytรครค sarakkeista vastaavan sijainnin, ei nimen. Tietotyyppien on silti oltava yhteensopivia, ja tulosjoukko kรคyttรครค ensimmรคisen SELECT-lausekkeen sarakenimiรค.

UNION pinoaa kahden tulosjoukon rivit pystysuunnassa yhdeksi sarakeluetteloksi poistaen kaksoiskappaleet. JOIN yhdistรครค eri taulukoiden sarakkeet vaakasuunnassa toisiinsa liittyvรคn avaimen perusteella, joten se leventรครค rivejรค niiden liittรคmisen sijaan.

ORDER BY lajittelee lopullisen yhdistetyn tuloksen, joten PostgreSQL sallii vain yhden ORDER BY -kรคskyn viimeisen SELECT-kรคskyn jรคlkeen. Yksittรคisten kyselyiden lajittelu ensin olisi merkityksetรถntรค, kun niiden rivit yhdistetรครคn.

Tekoรคlyavustajat, kuten GitHub Copilot, tasaavat kunkin SELECT-kyselyn sarakeluettelot, merkitsevรคt yhteensopimattomat tietotyypit ja suosittelevat UNION- tai UNION ALL -vaihtoehtoa sen perusteella, pitรคisikรถ kaksoiskappaleet sรคilyttรครค, mikรค vรคhentรครค yleisiรค kyselyvirheitรค.

Kyllรค. Tutkimalla taulukoitasi ja tavoitettasi tekoรคlyavustaja voi selvittรครค, ovatko rivien kaksoiskappaleet mahdollisia ja merkityksellisiรค, ja ehdottaa sitten UNION ALL -komentoa, kun kaksoiskappaleet ovat hyvรคksyttรคviรค nopeuden lisรครคmiseksi, tai UNION -komentoa, kun ne on poistettava.

UNION palauttaa rivit, jotka lรถytyvรคt kummastakin kyselystรค. INTERSECT palauttaa vain rivit, jotka esiintyvรคt molemmissa kyselyissรค, ja EXCEPT palauttaa ensimmรคisen kyselyn rivit, mutta ei toisen. Kaikki kolme poistavat kaksoiskappaleet oletusarvoisesti.

Tiivistรค tรคmรค viesti seuraavasti: