UNION-Klausul
Vi har tiltrukket os opmærksomheden fra en kunde, der har brug for SQL-forespørgsler. Før vi går videre til 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
UNIONdublerede rækker. BrugUNION ALL, hvis du ønsker at bevare dubletter.
For at give en bedre forståelse af hvordan man korrekt kombinerer tabeller ved hjælp af UNION-klausulen, er der 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 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
En gennemgang af processen:
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. Kolonnen Id er omdøbt, så begge forespørgsler har ens kolonnenavne.
Derefter anvendes UNION til at kombinere resultaterne fra disse forespørgsler, hvor dubletter fjernes (selvom der ikke er nogen her).
Til sidst sorteres resultaterne efter Id ved hjælp af ORDER BY.
Note
Der sorteres efter
Id, som er en fælles kolonne i begge tabeller.
Efter brug af UNION opnås en "samlet stor forespørgsel", som kan manipuleres yderligere med klausuler som ORDER BY.
Det er ikke muligt at bruge WHERE eller GROUP BY direkte med tabeller, der er kombineret ved hjælp af UNION. For at anvende disse klausuler skal der bruges 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 større fleksibilitet. Det kan virke udfordrende i starten, men det at mestre dette vil gøre det lettere 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
Can you explain the difference between UNION and UNION ALL?
How do I know when to use a subquery with UNION?
Can you show more examples of using UNION with different tables?
Fantastisk!
Completion rate forbedret til 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 videre til 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
UNIONdublerede rækker. BrugUNION ALL, hvis du ønsker at bevare dubletter.
For at give en bedre forståelse af hvordan man korrekt kombinerer tabeller ved hjælp af UNION-klausulen, er der 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 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
En gennemgang af processen:
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. Kolonnen Id er omdøbt, så begge forespørgsler har ens kolonnenavne.
Derefter anvendes UNION til at kombinere resultaterne fra disse forespørgsler, hvor dubletter fjernes (selvom der ikke er nogen her).
Til sidst sorteres resultaterne efter Id ved hjælp af ORDER BY.
Note
Der sorteres efter
Id, som er en fælles kolonne i begge tabeller.
Efter brug af UNION opnås en "samlet stor forespørgsel", som kan manipuleres yderligere med klausuler som ORDER BY.
Det er ikke muligt at bruge WHERE eller GROUP BY direkte med tabeller, der er kombineret ved hjælp af UNION. For at anvende disse klausuler skal der bruges 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 større fleksibilitet. Det kan virke udfordrende i starten, men det at mestre dette vil gøre det lettere 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!