Union-lauseke
Olemme herättäneet asiakkaan huomion, joka tarvitsee SQL-kyselyitä. Ennen kuin siirrymme JOINs
-lauseisiin, tutustutaan UNION
-lauseeseen, joka on olennainen useiden taulukoiden yhdistämisessä.
Tässä on joitakin tärkeitä asioita, jotka tulee tietää käytettäessä UNION
-lausetta:
-
Sarakkeiden määrä ja järjestys: Kaikissa kyselyissä, jotka yhdistetään
UNION
-lauseella, tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNION
poistaa päällekkäiset rivit. KäytäUNION ALL
, jos haluat säilyttää duplikaatit.
Jotta ymmärtäisit paremmin kuinka taulukoita yhdistetään oikein UNION
-lauseella, otin mukaan lisätaulukon, joka sisältää tietoa contractors
-henkilöistä.
Tässä ei ole paljon tietoa, vain first_name
, last_name
ja email
.
Voit huomata, että tämä taulu muistuttaa employees
-taulua. Käyttämällä UNION
-lausetta voimme yhdistää nämä kaksi taulua ja esimerkiksi tarkastella listaa kaikista yrityksen työntekijöistä ja alihankkijoista nimien ja sukunimien perusteella.
Tätä varten käytämme UNION
-lausetta:
12345678(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ä tässä tapahtuu:
Meillä on kaksi kyselyä, jotka molemmat palauttavat kolme saraketta samoilla tietotyypeillä. Haluamme nähdä kaikkien yrityksen henkilöiden Id
, first_name
ja last_name
. Nimeämme myös Id
-sarakkeen uudelleen, jotta molemmissa kyselyissä on samat sarakenimet.
Sen jälkeen käytämme UNION
-lausetta yhdistääksemme kyselyiden tulokset, jolloin kaksoiskappaleet poistetaan (tässä tapauksessa niitä ei ole).
Lopuksi järjestämme tulokset Id
-sarakkeen mukaan käyttämällä ORDER BY
-lausetta.
Huomio
Järjestämme
Id
-sarakkeen mukaan, joka on yhteinen sarake molemmissa tauluissa.
UNION
-lauseen käytön jälkeen saamme "yhden suuren kyselyn", jota voidaan edelleen käsitellä esimerkiksi ORDER BY
-lauseella.
Emme voi käyttää suoraan WHERE
- tai GROUP BY
-lauseita tauluissa, jotka on yhdistetty UNION
-operaattorilla. Näiden lauseiden käyttämiseksi meidän täytyy käyttää alikyselyä FROM
-osiossa. Tässä esimerkki siitä, miten tämä tehdään:
123456789SELECT 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 tarjoaa enemmän joustavuutta! Tämä voi aluksi tuntua hankalalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet ovat pakollisia käytettäessä UNION
-lausetta SQL:ssä?
2. Miten UNION
-lause käsittelee oletuksena päällekkäiset rivit?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain the difference between UNION and UNION ALL?
How do I know when to use a subquery with UNION?
Can you show more examples of using UNION with different tables?
Awesome!
Completion rate improved to 4
Union-lauseke
Pyyhkäise näyttääksesi valikon
Olemme herättäneet asiakkaan huomion, joka tarvitsee SQL-kyselyitä. Ennen kuin siirrymme JOINs
-lauseisiin, tutustutaan UNION
-lauseeseen, joka on olennainen useiden taulukoiden yhdistämisessä.
Tässä on joitakin tärkeitä asioita, jotka tulee tietää käytettäessä UNION
-lausetta:
-
Sarakkeiden määrä ja järjestys: Kaikissa kyselyissä, jotka yhdistetään
UNION
-lauseella, tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNION
poistaa päällekkäiset rivit. KäytäUNION ALL
, jos haluat säilyttää duplikaatit.
Jotta ymmärtäisit paremmin kuinka taulukoita yhdistetään oikein UNION
-lauseella, otin mukaan lisätaulukon, joka sisältää tietoa contractors
-henkilöistä.
Tässä ei ole paljon tietoa, vain first_name
, last_name
ja email
.
Voit huomata, että tämä taulu muistuttaa employees
-taulua. Käyttämällä UNION
-lausetta voimme yhdistää nämä kaksi taulua ja esimerkiksi tarkastella listaa kaikista yrityksen työntekijöistä ja alihankkijoista nimien ja sukunimien perusteella.
Tätä varten käytämme UNION
-lausetta:
12345678(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ä tässä tapahtuu:
Meillä on kaksi kyselyä, jotka molemmat palauttavat kolme saraketta samoilla tietotyypeillä. Haluamme nähdä kaikkien yrityksen henkilöiden Id
, first_name
ja last_name
. Nimeämme myös Id
-sarakkeen uudelleen, jotta molemmissa kyselyissä on samat sarakenimet.
Sen jälkeen käytämme UNION
-lausetta yhdistääksemme kyselyiden tulokset, jolloin kaksoiskappaleet poistetaan (tässä tapauksessa niitä ei ole).
Lopuksi järjestämme tulokset Id
-sarakkeen mukaan käyttämällä ORDER BY
-lausetta.
Huomio
Järjestämme
Id
-sarakkeen mukaan, joka on yhteinen sarake molemmissa tauluissa.
UNION
-lauseen käytön jälkeen saamme "yhden suuren kyselyn", jota voidaan edelleen käsitellä esimerkiksi ORDER BY
-lauseella.
Emme voi käyttää suoraan WHERE
- tai GROUP BY
-lauseita tauluissa, jotka on yhdistetty UNION
-operaattorilla. Näiden lauseiden käyttämiseksi meidän täytyy käyttää alikyselyä FROM
-osiossa. Tässä esimerkki siitä, miten tämä tehdään:
123456789SELECT 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 tarjoaa enemmän joustavuutta! Tämä voi aluksi tuntua hankalalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet ovat pakollisia käytettäessä UNION
-lausetta SQL:ssä?
2. Miten UNION
-lause käsittelee oletuksena päällekkäiset rivit?
Kiitos palautteestasi!