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ä.
UNION SQL:ssä yhdistää kahden tai useamman SELECT-kyselyn tulokset yhdeksi tulosjoukoksi. Sen avulla voidaan yhdistää useiden kyselyiden rivit yhdeksi tietojoukoksi.
Tässä on joitakin tärkeitä asioita, jotka tulee tietää UNION-lauseen käytöstä:
-
Sarakkeiden määrä ja järjestys: Kaikissa
UNION-lauseella yhdistettävissä kyselyissä tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNIONpoistaa päällekkäiset rivit. KäytäUNION ALL, jos haluat säilyttää duplikaatit.
Ymmärtääksesi paremmin kuinka tauluja yhdistetään oikein käyttämällä UNION-lausetta, esittelin lisätaulun, joka sisältää tietoja contractors-taulusta.
Tässä taulussa ei ole paljon tietoja, 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 esimerkiksi nähdäksemme luettelon kaikista yrityksen työntekijöiden ja urakoitsijoiden nimistä ja sukunimistä.
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ä 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. Olemme myös nimenneet Id-sarakkeen uudelleen, jotta molemmissa kyselyissä on samannimiset sarakkeet.
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äen ORDER BY -lausetta.
Järjestämme tulokset Id-sarakkeen mukaan, joka on yhteinen sarake molemmissa tauluissa.
UNION-lauseen jälkeen saadaan "yksi suuri kysely", jota voidaan edelleen käsitellä esimerkiksi ORDER BY -lauseella.
Emme voi käyttää suoraan WHERE- tai GROUP BY -lauseita tauluissa, jotka on yhdistetty UNION-operaatiolla. Näiden lauseiden käyttämiseksi tulee hyödyntää alikyselyä FROM-osiossa. Alla on esimerkki tämän toteuttamisesta:
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 vaikuttaa haastavalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet vaaditaan käytettäessä UNION-lausetta SQL:ssä?
2. Miten UNION-lause käsittelee oletuksena päällekkäisiä rivejä?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 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ä.
UNION SQL:ssä yhdistää kahden tai useamman SELECT-kyselyn tulokset yhdeksi tulosjoukoksi. Sen avulla voidaan yhdistää useiden kyselyiden rivit yhdeksi tietojoukoksi.
Tässä on joitakin tärkeitä asioita, jotka tulee tietää UNION-lauseen käytöstä:
-
Sarakkeiden määrä ja järjestys: Kaikissa
UNION-lauseella yhdistettävissä kyselyissä tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNIONpoistaa päällekkäiset rivit. KäytäUNION ALL, jos haluat säilyttää duplikaatit.
Ymmärtääksesi paremmin kuinka tauluja yhdistetään oikein käyttämällä UNION-lausetta, esittelin lisätaulun, joka sisältää tietoja contractors-taulusta.
Tässä taulussa ei ole paljon tietoja, 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 esimerkiksi nähdäksemme luettelon kaikista yrityksen työntekijöiden ja urakoitsijoiden nimistä ja sukunimistä.
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ä 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. Olemme myös nimenneet Id-sarakkeen uudelleen, jotta molemmissa kyselyissä on samannimiset sarakkeet.
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äen ORDER BY -lausetta.
Järjestämme tulokset Id-sarakkeen mukaan, joka on yhteinen sarake molemmissa tauluissa.
UNION-lauseen jälkeen saadaan "yksi suuri kysely", jota voidaan edelleen käsitellä esimerkiksi ORDER BY -lauseella.
Emme voi käyttää suoraan WHERE- tai GROUP BY -lauseita tauluissa, jotka on yhdistetty UNION-operaatiolla. Näiden lauseiden käyttämiseksi tulee hyödyntää alikyselyä FROM-osiossa. Alla on esimerkki tämän toteuttamisesta:
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 vaikuttaa haastavalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet vaaditaan käytettäessä UNION-lausetta SQL:ssä?
2. Miten UNION-lause käsittelee oletuksena päällekkäisiä rivejä?
Kiitos palautteestasi!