UNION-Klausul
Vi har tiltrukket os opmærksomheden fra en kunde, der har brug for SQL-forespørgsler. Før vi går i gang med JOINs
, skal vi lære om UNION
-klausulen, som er afgørende for at kombinere flere tabeller.
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
UNION
dublerede rækker. BrugUNION ALL
, hvis du vil beholde dubletter.
For at give en bedre forståelse af hvordan man korrekt kombinerer tabeller ved hjælp af UNION
-klausulen, har jeg introduceret en ekstra tabel, der indeholder oplysninger 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 vi kombinere disse to tabeller for eksempelvis at se en liste over alle for- og efternavne på medarbejdere og konsulenter, der er involveret i virksomheden.
For at gøre dette bruger vi 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
Lad os gennemgå, hvad der sker:
Vi har to forespørgsler, der hver returnerer tre kolonner med samme datatyper. Vi ønsker at se Id
, first_name
og last_name
for alle i virksomheden. Vi har også omdøbt Id
-kolonnen, så begge forespørgsler har samme kolonnenavne.
Derefter bruger vi UNION
til at kombinere resultaterne af disse forespørgsler, hvor dubletter fjernes (selvom der ikke er nogen her).
Til sidst sorterer vi resultaterne efter Id
ved hjælp af ORDER BY
.
Bemærk
Vi sorterer efter
Id
, som er en fælles kolonne i begge tabeller.
Efter brug af UNION
får vi en "enkel stor forespørgsel", som vi kan manipulere yderligere med klausuler som ORDER BY
.
Vi kan ikke direkte bruge WHERE
eller GROUP BY
med tabeller, der er kombineret ved hjælp af UNION
. For at anvende disse klausuler skal vi bruge en subforespø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'
Ved at bruge en subforespørgsel i FROM
-sektionen opnår vi større fleksibilitet! Det kan virke udfordrende i starten, men når du mestrer dette, bliver det meget nemmere at skrive komplekse forespørgsler.
1. Hvilke kolonner er påkrævet, når man bruger UNION
-klausulen i SQL?
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
Awesome!
Completion rate improved to 4
UNION-Klausul
Stryg for at vise menuen
Vi har tiltrukket os opmærksomheden fra en kunde, der har brug for SQL-forespørgsler. Før vi går i gang med JOINs
, skal vi lære om UNION
-klausulen, som er afgørende for at kombinere flere tabeller.
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
UNION
dublerede rækker. BrugUNION ALL
, hvis du vil beholde dubletter.
For at give en bedre forståelse af hvordan man korrekt kombinerer tabeller ved hjælp af UNION
-klausulen, har jeg introduceret en ekstra tabel, der indeholder oplysninger 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 vi kombinere disse to tabeller for eksempelvis at se en liste over alle for- og efternavne på medarbejdere og konsulenter, der er involveret i virksomheden.
For at gøre dette bruger vi 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
Lad os gennemgå, hvad der sker:
Vi har to forespørgsler, der hver returnerer tre kolonner med samme datatyper. Vi ønsker at se Id
, first_name
og last_name
for alle i virksomheden. Vi har også omdøbt Id
-kolonnen, så begge forespørgsler har samme kolonnenavne.
Derefter bruger vi UNION
til at kombinere resultaterne af disse forespørgsler, hvor dubletter fjernes (selvom der ikke er nogen her).
Til sidst sorterer vi resultaterne efter Id
ved hjælp af ORDER BY
.
Bemærk
Vi sorterer efter
Id
, som er en fælles kolonne i begge tabeller.
Efter brug af UNION
får vi en "enkel stor forespørgsel", som vi kan manipulere yderligere med klausuler som ORDER BY
.
Vi kan ikke direkte bruge WHERE
eller GROUP BY
med tabeller, der er kombineret ved hjælp af UNION
. For at anvende disse klausuler skal vi bruge en subforespø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'
Ved at bruge en subforespørgsel i FROM
-sektionen opnår vi større fleksibilitet! Det kan virke udfordrende i starten, men når du mestrer dette, bliver det meget nemmere at skrive komplekse forespørgsler.
1. Hvilke kolonner er påkrævet, når man bruger UNION
-klausulen i SQL?
2. Hvordan håndterer UNION
-klausulen dublerede rækker som standard?
Tak for dine kommentarer!