Union-Klausul
Vi har fått oppmerksomheten til en klient som trenger SQL-spørringer. Før vi dykker inn i JOINs, la oss lære om UNION-klausulen, som er essensiell for å kombinere flere tabeller.
Her er noen viktige ting å vite om bruk av UNION:
-
Antall kolonner og rekkefølge: Alle spørringer kombinert med
UNIONmå ha samme antall kolonner i samme rekkefølge; -
Datatyper: Kolonnene i hver spørring må ha kompatible datatyper;
-
Unike rader: Som standard fjerner
UNIONdupliserte rader. BrukUNION ALLhvis du vil beholde duplikater.
For en bedre forståelse av hvordan man korrekt kombinerer tabeller ved bruk av UNION-klausulen, har jeg introdusert en ekstra tabell som inneholder informasjon om contractors.
Det er ikke mye informasjon her, bare first_name, last_name, og email.
Du kan se at denne tabellen har likheter med employees-tabellen. Ved å bruke UNION-klausulen kan vi kombinere disse to tabellene for å for eksempel se en liste over alle navn og etternavn til ansatte og contractors involvert i selskapet.
For å gjøre dette, vil vi bruke UNION-klausulen:
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
La oss bryte ned hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å se Id, first_name og last_name til alle i selskapet. Vi har også gitt nytt navn til Id-kolonnen slik at begge spørringene har samme kolonnenavn.
Deretter bruker vi UNION for å kombinere resultatene av disse spørringene, og fjerner duplikater (selv om det ikke er noen her).
Til slutt sorterer vi resultatene etter Id ved å bruke ORDER BY.
Merk
Vi sorterer etter
Id, som er en felles kolonne i begge tabellene.
Etter å ha brukt UNION, får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY.
Vi kan ikke direkte bruke WHERE eller GROUP BY med tabeller kombinert ved hjelp av UNION. For å bruke disse klausulene, må vi bruke en subquery i FROM-seksjonen. Her er et eksempel på hvordan du gjør det:
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'
Å bruke en subquery i FROM-seksjonen gir oss mer fleksibilitet! Det kan virke vanskelig i begynnelsen, men å mestre dette vil gjøre det mye enklere å skrive komplekse spørringer.
1. Hvilke kolonner er nødvendige når du bruker UNION-klause i SQL?
2. Hvordan behandler UNION-klause dupliserte rader som standard?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
What is the difference between UNION and UNION ALL?
Can you explain why we need to use a subquery for WHERE or GROUP BY with UNION?
Can you show an example using GROUP BY with UNION?
Awesome!
Completion rate improved to 4
Union-Klausul
Sveip for å vise menyen
Vi har fått oppmerksomheten til en klient som trenger SQL-spørringer. Før vi dykker inn i JOINs, la oss lære om UNION-klausulen, som er essensiell for å kombinere flere tabeller.
Her er noen viktige ting å vite om bruk av UNION:
-
Antall kolonner og rekkefølge: Alle spørringer kombinert med
UNIONmå ha samme antall kolonner i samme rekkefølge; -
Datatyper: Kolonnene i hver spørring må ha kompatible datatyper;
-
Unike rader: Som standard fjerner
UNIONdupliserte rader. BrukUNION ALLhvis du vil beholde duplikater.
For en bedre forståelse av hvordan man korrekt kombinerer tabeller ved bruk av UNION-klausulen, har jeg introdusert en ekstra tabell som inneholder informasjon om contractors.
Det er ikke mye informasjon her, bare first_name, last_name, og email.
Du kan se at denne tabellen har likheter med employees-tabellen. Ved å bruke UNION-klausulen kan vi kombinere disse to tabellene for å for eksempel se en liste over alle navn og etternavn til ansatte og contractors involvert i selskapet.
For å gjøre dette, vil vi bruke UNION-klausulen:
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
La oss bryte ned hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å se Id, first_name og last_name til alle i selskapet. Vi har også gitt nytt navn til Id-kolonnen slik at begge spørringene har samme kolonnenavn.
Deretter bruker vi UNION for å kombinere resultatene av disse spørringene, og fjerner duplikater (selv om det ikke er noen her).
Til slutt sorterer vi resultatene etter Id ved å bruke ORDER BY.
Merk
Vi sorterer etter
Id, som er en felles kolonne i begge tabellene.
Etter å ha brukt UNION, får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY.
Vi kan ikke direkte bruke WHERE eller GROUP BY med tabeller kombinert ved hjelp av UNION. For å bruke disse klausulene, må vi bruke en subquery i FROM-seksjonen. Her er et eksempel på hvordan du gjør det:
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'
Å bruke en subquery i FROM-seksjonen gir oss mer fleksibilitet! Det kan virke vanskelig i begynnelsen, men å mestre dette vil gjøre det mye enklere å skrive komplekse spørringer.
1. Hvilke kolonner er nødvendige når du bruker UNION-klause i SQL?
2. Hvordan behandler UNION-klause dupliserte rader som standard?
Takk for tilbakemeldingene dine!