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
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!