Union-sats
Vi har fångat intresset hos en kund som behöver SQL-frågor. Innan vi går vidare till JOINs
, ska vi lära oss om UNION
-satsen, som är avgörande för att kombinera flera tabeller.
Här är några viktiga saker att känna till om användning av UNION
:
-
Antal kolumner och ordning: Alla frågor som kombineras med
UNION
måste ha samma antal kolumner i samma ordning; -
Datatyper: Kolumnerna i varje fråga måste ha kompatibla datatyper;
-
Unika rader: Som standard tar
UNION
bort dubbletter. AnvändUNION ALL
om du vill behålla dubbletter.
För att ge en bättre förståelse för hur man korrekt kombinerar tabeller med hjälp av UNION
-satsen har jag lagt till en ytterligare tabell som innehåller information om contractors
.
Det finns inte mycket information här, bara first_name
, last_name
och email
.
Du kan se att denna tabell har likheter med tabellen employees
. Med hjälp av UNION
-satsen kan vi kombinera dessa två tabeller för att till exempel visa en lista över alla för- och efternamn på anställda och konsulter som är involverade i företaget.
För att göra detta använder vi UNION
-satsen:
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
Låt oss förklara vad som händer:
Vi har två frågor som båda returnerar tre kolumner med samma datatyper. Vi vill visa Id
, first_name
och last_name
för alla i företaget. Vi har även bytt namn på kolumnen Id
så att båda frågorna har samma kolumnnamn.
Sedan använder vi UNION
för att kombinera resultaten från dessa frågor, vilket tar bort dubbletter (även om det inte finns några här).
Slutligen sorterar vi resultaten efter Id
med hjälp av ORDER BY
.
Note
Vi sorterar efter
Id
, som är en gemensam kolumn i båda tabellerna.
Efter att ha använt UNION
får vi en "enda stor fråga" som vi kan manipulera vidare med satser som ORDER BY
.
Vi kan inte direkt använda WHERE
eller GROUP BY
med tabeller som kombineras med UNION
. För att använda dessa klausuler behöver vi använda en subfråga i FROM
-sektionen. Här är ett exempel på hur man gör det:
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'
Att använda en subfråga i FROM
-sektionen ger oss större flexibilitet! Det kan verka svårt till en början, men att bemästra detta gör det mycket enklare att skriva komplexa frågor.
1. Vilka kolumner krävs när du använder UNION
-satsen i SQL?
2. Hur hanterar UNION
-satsen dubblettrader som standard?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Awesome!
Completion rate improved to 4
Union-sats
Svep för att visa menyn
Vi har fångat intresset hos en kund som behöver SQL-frågor. Innan vi går vidare till JOINs
, ska vi lära oss om UNION
-satsen, som är avgörande för att kombinera flera tabeller.
Här är några viktiga saker att känna till om användning av UNION
:
-
Antal kolumner och ordning: Alla frågor som kombineras med
UNION
måste ha samma antal kolumner i samma ordning; -
Datatyper: Kolumnerna i varje fråga måste ha kompatibla datatyper;
-
Unika rader: Som standard tar
UNION
bort dubbletter. AnvändUNION ALL
om du vill behålla dubbletter.
För att ge en bättre förståelse för hur man korrekt kombinerar tabeller med hjälp av UNION
-satsen har jag lagt till en ytterligare tabell som innehåller information om contractors
.
Det finns inte mycket information här, bara first_name
, last_name
och email
.
Du kan se att denna tabell har likheter med tabellen employees
. Med hjälp av UNION
-satsen kan vi kombinera dessa två tabeller för att till exempel visa en lista över alla för- och efternamn på anställda och konsulter som är involverade i företaget.
För att göra detta använder vi UNION
-satsen:
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
Låt oss förklara vad som händer:
Vi har två frågor som båda returnerar tre kolumner med samma datatyper. Vi vill visa Id
, first_name
och last_name
för alla i företaget. Vi har även bytt namn på kolumnen Id
så att båda frågorna har samma kolumnnamn.
Sedan använder vi UNION
för att kombinera resultaten från dessa frågor, vilket tar bort dubbletter (även om det inte finns några här).
Slutligen sorterar vi resultaten efter Id
med hjälp av ORDER BY
.
Note
Vi sorterar efter
Id
, som är en gemensam kolumn i båda tabellerna.
Efter att ha använt UNION
får vi en "enda stor fråga" som vi kan manipulera vidare med satser som ORDER BY
.
Vi kan inte direkt använda WHERE
eller GROUP BY
med tabeller som kombineras med UNION
. För att använda dessa klausuler behöver vi använda en subfråga i FROM
-sektionen. Här är ett exempel på hur man gör det:
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'
Att använda en subfråga i FROM
-sektionen ger oss större flexibilitet! Det kan verka svårt till en början, men att bemästra detta gör det mycket enklare att skriva komplexa frågor.
1. Vilka kolumner krävs när du använder UNION
-satsen i SQL?
2. Hur hanterar UNION
-satsen dubblettrader som standard?
Tack för dina kommentarer!