UNION-Setning
Sveip for å vise menyen
Du har fått oppmerksomheten til en kunde som trenger SQL-spørringer. Før du går videre til JOINs, skal du lære om UNION-setningen, som er viktig for å kombinere flere tabeller.
UNION i SQL brukes til å kombinere resultatene fra to eller flere SELECT-spørringer til ett samlet resultatsett. Dette gjør det mulig å slå sammen rader fra flere spørringer til ett enkelt datasett.
Her er noen viktige ting å vite om bruk av UNION:
-
Antall kolonner og rekkefølge: alle spørringer som kombineres 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 bedre forståelse av hvordan man korrekt kombinerer tabeller ved bruk av UNION-klauselet, er det introdusert en ekstra tabell som inneholder informasjon om contractors.
Det er ikke mye informasjon her, kun first_name, last_name og email.
Du kan se at denne tabellen har likheter med employees-tabellen. Ved å bruke UNION-klauselet kan du kombinere disse to tabellene for å for eksempel se en liste over alle fornavn og etternavn til ansatte og innleide som er involvert i selskapet.
For å gjøre dette bruker du UNION-klauselet:
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
Det er to spørringer som hver returnerer tre kolonner med samme datatyper. Målet er å vise Id, first_name og last_name for alle i selskapet. Id-kolonnen ble også gitt nytt navn slik at begge spørringene har samme kolonnenavn.
UNION kombinerer resultatene fra disse spørringene og fjerner duplikater (selv om det ikke finnes noen her).
Til slutt sorteres resultatene etter Id ved bruk av ORDER BY.
Resultatene sorteres etter Id, som er en felles kolonne i begge tabellene.
Etter bruk av UNION får du en "enkel stor spørring" som du kan manipulere videre med klausuler som ORDER BY.
Du kan ikke bruke WHERE eller GROUP BY direkte med tabeller som er kombinert med UNION. For å bruke disse klausulene må du benytte en subquery i FROM-delen. Her er et eksempel på hvordan det gjøres:
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 underforespørsel i FROM-delen gir mer fleksibilitet! Det kan virke utfordrende i starten, men å mestre dette gjør det mye enklere å skrive komplekse spørringer.
1. Hvilke krav må resultatsettene oppfylle for å kunne kombineres med UNION?
2. Hvordan håndterer UNION-klasulen 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