UNION-setning
Vi har fått oppmerksomheten til en kunde som trenger SQL-spørringer. Før vi går videre til JOINs, skal vi 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 ønsker å 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 vi kombinere disse to tabellene for å for eksempel vise en liste over alle fornavn og etternavn til ansatte og innleide som er involvert i selskapet.
For å gjøre dette, bruker vi 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
La oss se nærmere på hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å vise Id, first_name og last_name for alle i selskapet. Vi har også gitt kolonnen Id samme navn i begge spørringene slik at de har identiske kolonnenavn.
Deretter bruker vi UNION for å kombinere resultatene fra disse spørringene, og fjerner duplikater (selv om det ikke finnes noen her).
Til slutt sorterer vi resultatene etter Id ved å bruke ORDER BY.
Vi sorterer etter Id, som er en felles kolonne i begge tabellene.
Etter bruk av UNION får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY.
Det er ikke mulig å bruke WHERE eller GROUP BY direkte med tabeller som er kombinert ved hjelp av UNION. For å bruke disse klausulene, må vi benytte en underforespørsel i FROM-delen. Her er et eksempel på hvordan dette 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'
Ved å bruke en underforespørsel i FROM-delen får vi større fleksibilitet. Det kan virke utfordrende i starten, men å mestre dette vil gjøre det mye enklere å skrive komplekse spørringer.
1. Hvilke kolonner kreves når du bruker UNION-setningen i SQL?
2. Hvordan håndterer UNION-setningen 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
Can you explain the difference between UNION and UNION ALL?
How do I use GROUP BY with a UNION result?
Can you show more examples of using subqueries with UNION?
Fantastisk!
Completion rate forbedret til 4
UNION-setning
Sveip for å vise menyen
Vi har fått oppmerksomheten til en kunde som trenger SQL-spørringer. Før vi går videre til JOINs, skal vi 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 ønsker å 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 vi kombinere disse to tabellene for å for eksempel vise en liste over alle fornavn og etternavn til ansatte og innleide som er involvert i selskapet.
For å gjøre dette, bruker vi 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
La oss se nærmere på hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å vise Id, first_name og last_name for alle i selskapet. Vi har også gitt kolonnen Id samme navn i begge spørringene slik at de har identiske kolonnenavn.
Deretter bruker vi UNION for å kombinere resultatene fra disse spørringene, og fjerner duplikater (selv om det ikke finnes noen her).
Til slutt sorterer vi resultatene etter Id ved å bruke ORDER BY.
Vi sorterer etter Id, som er en felles kolonne i begge tabellene.
Etter bruk av UNION får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY.
Det er ikke mulig å bruke WHERE eller GROUP BY direkte med tabeller som er kombinert ved hjelp av UNION. For å bruke disse klausulene, må vi benytte en underforespørsel i FROM-delen. Her er et eksempel på hvordan dette 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'
Ved å bruke en underforespørsel i FROM-delen får vi større fleksibilitet. Det kan virke utfordrende i starten, men å mestre dette vil gjøre det mye enklere å skrive komplekse spørringer.
1. Hvilke kolonner kreves når du bruker UNION-setningen i SQL?
2. Hvordan håndterer UNION-setningen dupliserte rader som standard?
Takk for tilbakemeldingene dine!