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: