Union-Klausul
Stryg for at vise menuen
Du har fanget opmærksomheden fra en kunde, der har brug for SQL-forespørgsler. Før du dykker ned i JOINs, vil du lære om UNION-klausulen, som er essentiel for at kombinere flere tabeller.
UNION i SQL bruges til at kombinere resultaterne af to eller flere SELECT-forespørgsler i ét samlet sæt. Det gør det muligt at sammenflette rækker fra flere forespørgsler til ét samlet datasæt.
Her er nogle vigtige ting at vide om brugen af UNION:
-
Antal kolonner og rækkefølge: alle forespørgsler, der kombineres med
UNION, skal have samme antal kolonner i samme rækkefølge; -
Datatyper: kolonnerne i hver forespørgsel skal have kompatible datatyper;
-
Unikke rækker: som standard fjerner
UNIONdublerede rækker. BrugUNION ALL, hvis du vil beholde dubletter.
For bedre forståelse af hvordan man korrekt kombinerer tabeller ved hjælp af UNION-klausulen, er der blevet introduceret en ekstra tabel, der indeholder information om contractors.
Der er ikke mange oplysninger her, kun first_name, last_name og email.
Du kan se, at denne tabel har ligheder med employees-tabellen. Ved at bruge UNION-klausulen kan du kombinere disse to tabeller for eksempel for at se en liste over alle for- og efternavne på medarbejdere og contractors involveret i virksomheden.
For at gøre dette bruger du 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
Der er to forespørgsler, som hver returnerer tre kolonner med samme datatyper. Formålet er at vise Id, first_name og last_name for alle i virksomheden. Id-kolonnen er også omdøbt, så begge forespørgsler har samme kolonnenavne.
UNION kombinerer resultaterne af disse forespørgsler og fjerner dubletter (selvom der ikke er nogen her).
Resultaterne sorteres til sidst efter Id ved hjælp af ORDER BY.
Resultaterne sorteres efter Id, som er en fælles kolonne i begge tabeller.
Efter brug af UNION får du en "enkel stor forespørgsel", som du yderligere kan manipulere med klausuler som ORDER BY.
Du kan ikke direkte bruge WHERE eller GROUP BY med tabeller kombineret ved hjælp af UNION. For at anvende disse klausuler skal du bruge en underforespørgsel i FROM-sektionen. Her er et eksempel på, hvordan det gø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'
Brug af en underforespørgsel i FROM-sektionen giver mere fleksibilitet! Det kan virke udfordrende i starten, men når du mestrer dette, bliver det meget nemmere at skrive komplekse forespørgsler.
1. Hvilke krav skal resultatsæt opfylde for at kunne kombineres med UNION?
2. Hvordan håndterer UNION-klausulen dublerede rækker som standard?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat