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
-klasulen, som er viktig for å kombinere flere tabeller.
Her er noen viktige ting å vite om bruk av UNION
:
-
Antall kolonner og rekkefølge: Alle spørringer som kombineres med
UNION
må ha samme antall kolonner i samme rekkefølge; -
Datatyper: Kolonnene i hver spørring må ha kompatible datatyper;
-
Unike rader: Som standard fjerner
UNION
dupliserte rader. BrukUNION ALL
hvis du vil beholde duplikater.
For å gi en bedre forståelse av hvordan man korrekt kombinerer tabeller ved bruk av UNION
-klasulen, har jeg 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
-klasulen kan vi kombinere disse to tabellene for å for eksempel vise en liste over alle fornavn og etternavn til ansatte og konsulenter som er involvert i selskapet.
For å gjøre dette, bruker vi UNION
-klasulen:
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 gå gjennom hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å se Id
, first_name
og last_name
for alle i selskapet. Vi har også gitt kolonnenavnet Id
slik at begge spørringene har samme kolonnenavn.
Deretter bruker vi UNION
for å kombinere resultatene fra disse spørringene, og fjerner duplikater (selv om det ikke er noen her).
Til slutt sorterer vi resultatene etter Id
ved å bruke ORDER BY
.
Merk
Vi sorterer etter
Id
, som er en felles kolonne i begge tabellene.
Etter å ha brukt UNION
, får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY
.
Vi kan ikke 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'
Å bruke en underforespørsel i FROM
-delen gir oss 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
Awesome!
Completion rate improved to 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
-klasulen, som er viktig for å kombinere flere tabeller.
Her er noen viktige ting å vite om bruk av UNION
:
-
Antall kolonner og rekkefølge: Alle spørringer som kombineres med
UNION
må ha samme antall kolonner i samme rekkefølge; -
Datatyper: Kolonnene i hver spørring må ha kompatible datatyper;
-
Unike rader: Som standard fjerner
UNION
dupliserte rader. BrukUNION ALL
hvis du vil beholde duplikater.
For å gi en bedre forståelse av hvordan man korrekt kombinerer tabeller ved bruk av UNION
-klasulen, har jeg 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
-klasulen kan vi kombinere disse to tabellene for å for eksempel vise en liste over alle fornavn og etternavn til ansatte og konsulenter som er involvert i selskapet.
For å gjøre dette, bruker vi UNION
-klasulen:
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 gå gjennom hva som skjer:
Vi har to spørringer som hver returnerer tre kolonner med samme datatyper. Vi ønsker å se Id
, first_name
og last_name
for alle i selskapet. Vi har også gitt kolonnenavnet Id
slik at begge spørringene har samme kolonnenavn.
Deretter bruker vi UNION
for å kombinere resultatene fra disse spørringene, og fjerner duplikater (selv om det ikke er noen her).
Til slutt sorterer vi resultatene etter Id
ved å bruke ORDER BY
.
Merk
Vi sorterer etter
Id
, som er en felles kolonne i begge tabellene.
Etter å ha brukt UNION
, får vi en "enkel stor spørring" som vi kan manipulere videre med klausuler som ORDER BY
.
Vi kan ikke 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'
Å bruke en underforespørsel i FROM
-delen gir oss 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!