Kurssisisältö
Keskitaso SQL
Keskitaso SQL
UNION-Lauseke
Olemme herättäneet asiakkaan huomion, joka tarvitsee SQL-kyselyitä. Ennen kuin sukellamme JOINs
-toimintoihin, opitaan UNION
-lauseesta, joka on olennainen useiden taulukoiden yhdistämisessä.
Tässä on joitakin tärkeitä asioita, jotka on hyvä tietää UNION
-lauseen käytöstä:
Sarakkeiden määrä ja järjestys: Kaikissa
UNION
-lauseella yhdistetyissä kyselyissä on oltava sama määrä sarakkeita samassa järjestyksessä;Tietotyypit: Jokaisen kyselyn sarakkeiden on oltava yhteensopivia tietotyyppejä;
Uniikit rivit: Oletuksena
UNION
poistaa päällekkäiset rivit. KäytäUNION ALL
, jos haluat säilyttää päällekkäisyydet.
Ymmärtääksesi paremmin kuinka yhdistää taulukoita oikein käyttämällä UNION
-lausetta, esittelin lisätaulukon, joka sisältää tietoja contractors
.
Täällä ei ole paljon tietoa, vain first_name
, last_name
ja email
.
Voit nähdä, että tällä taulukolla on yhtäläisyyksiä employees
-taulukon kanssa. Käyttämällä UNION
-lausetta voimme yhdistää nämä kaksi taulukkoa esimerkiksi nähdäksesi luettelon kaikista työntekijöiden ja urakoitsijoiden nimistä ja sukunimistä, jotka ovat mukana yrityksessä.
Tätä varten käytämme UNION
-lausetta:
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Käydään läpi, mitä tapahtuu:
Meillä on kaksi kyselyä, jotka kumpikin palauttavat kolme saraketta samoilla tietotyypeillä. Haluamme nähdä Id
, first_name
ja last_name
kaikista yrityksessä. Nimesimme myös Id
-sarakkeen uudelleen, jotta molemmilla kyselyillä on samannimiset sarakkeet.
Sitten käytämme UNION
-operaattoria yhdistääksemme kyselyjen tulokset, poistaen duplikaatit (vaikka tässä tapauksessa niitä ei ole).
Lopuksi lajittelemme tulokset Id
-sarakkeen mukaan käyttäen ORDER BY
-lausetta.
Huomautus
Lajittelemme
Id
-sarakkeen mukaan, joka on yhteinen sarake molemmissa tauluissa.
Käytettyämme UNION
-operaattoria saamme "yhden suuren kyselyn", jota voimme edelleen käsitellä lausekkeilla kuten ORDER BY
.
Emme voi suoraan käyttää WHERE
tai GROUP BY
yhdistetyissä tauluissa, jotka on yhdistetty UNION
-lauseella. Näiden lausekkeiden soveltamiseksi meidän on käytettävä alikyselyä FROM
-osiossa. Tässä on esimerkki siitä, miten se tehdään:
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Alikyselyn käyttäminen FROM
-osiossa antaa meille enemmän joustavuutta! Se saattaa vaikuttaa aluksi hankalalta, mutta tämän hallitseminen tekee monimutkaisten kyselyiden kirjoittamisesta paljon helpompaa.
1. Mitkä sarakkeet ovat pakollisia käytettäessä UNION
-lausetta SQL:ssä?
2. Kuinka UNION
-lause käsittelee oletusarvoisesti päällekkäisiä rivejä?
Kiitos palautteestasi!