Union-sats
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.
UNION i SQL används för att kombinera resultaten från två eller flera SELECT-frågor till en enda resultatmängd. Det gör det möjligt att slå samman rader från flera frågor till en gemensam datamängd.
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 en bättre förståelse av hur man korrekt kombinerar tabeller med hjälp av UNION-satsen har jag infört en ytterligare tabell som innehåller information om contractors.
Det finns inte mycket information här, endast 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 entreprenörer 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 vardera 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.
Vi sorterar efter Id, vilket ä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 bearbeta 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 det görs:
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 behärska 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 use GROUP BY with a UNION result?
Can you show more examples of using subqueries with UNION?
Fantastiskt!
Completion betyg förbättrat till 4
Union-sats
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.
UNION i SQL används för att kombinera resultaten från två eller flera SELECT-frågor till en enda resultatmängd. Det gör det möjligt att slå samman rader från flera frågor till en gemensam datamängd.
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 en bättre förståelse av hur man korrekt kombinerar tabeller med hjälp av UNION-satsen har jag infört en ytterligare tabell som innehåller information om contractors.
Det finns inte mycket information här, endast 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 entreprenörer 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 vardera 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.
Vi sorterar efter Id, vilket ä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 bearbeta 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 det görs:
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 behärska 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!