UNION-satsen
Vi har väckt 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
UNIONmåste ha samma antal kolumner i samma ordning; -
Datatyper: kolumnerna i varje fråga måste ha kompatibla datatyper;
-
Unika rader: som standard tar
UNIONbort dubbletter. AnvändUNION ALLom 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 gå igenom vad som händer:
Vi har två frågor som båda returnerar tre kolumner med samma datatyper. Vi vill se 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 "stor sammanslagen fråga" som vi kan bearbeta vidare med satser som ORDER BY.
Det går inte att använda WHERE eller GROUP BY direkt 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 det kan göras:
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 större flexibilitet. Det kan verka komplicerat till en början, men att behärska detta förenklar arbetet med komplexa frågor avsevärt.
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-satsen
Svep för att visa menyn
Vi har väckt 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
UNIONmåste ha samma antal kolumner i samma ordning; -
Datatyper: kolumnerna i varje fråga måste ha kompatibla datatyper;
-
Unika rader: som standard tar
UNIONbort dubbletter. AnvändUNION ALLom 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 gå igenom vad som händer:
Vi har två frågor som båda returnerar tre kolumner med samma datatyper. Vi vill se 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 "stor sammanslagen fråga" som vi kan bearbeta vidare med satser som ORDER BY.
Det går inte att använda WHERE eller GROUP BY direkt 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 det kan göras:
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 större flexibilitet. Det kan verka komplicerat till en början, men att behärska detta förenklar arbetet med komplexa frågor avsevärt.
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!