UNION, INTERSECT, EXCEPT
Kombinera kompatibla resultatmängder med UNION, hitta gemensamma rader med INTERSECT och hitta skillnaden med EXCEPT.
UNION, INTERSECT, EXCEPT är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.
Översikt över mängdoperationer
Tre mängdoperatorer kombinerar resultatuppsättningar rad för rad:
UNION— rader som finns i A ELLER B (utan dubbletter)INTERSECT— rader som finns i A OCH BEXCEPT— rader som finns i A men INTE i B
UNION
Kombinera två resultatuppsättningar och ta bort dubbletter:
SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;Kolumnkompatibilitet
Båda frågorna måste ha samma antal kolumner och kompatibla typer:
-- OK:
SELECT email FROM users UNION SELECT email FROM customers;
-- ERROR — different column count:
SELECT email FROM users UNION SELECT email, name FROM customers;INTERSECT
Rader som förekommer i båda frågorna:
SELECT product_id FROM orders WHERE user_id = 1
INTERSECT
SELECT product_id FROM orders WHERE user_id = 2;
-- Products bought by BOTH users.EXCEPT
Rader i den första frågan men inte i den andra:
SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.ORDER BY med mängdoperatorer
ORDER BY tillämpas på hela det kombinerade resultatet. Placera det sist:
SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;Mängdoperatorer och NULL
För mängdoperationer behandlas två NULL-värden som lika — UNION tar bort dem som dubbletter och INTERSECT matchar dem. (Det skiljer sig från NULL = NULL i WHERE.)
Mängdoperatorer på underfrågor
Använd parenteser runt underfrågor för tydlighet och för att kunna kombinera dem med LIMIT:
(SELECT id FROM users ORDER BY created_at DESC LIMIT 10)
UNION
(SELECT id FROM users ORDER BY total DESC LIMIT 10);Operatorprioritet
INTERSECT har högre bindningsstyrka än UNION/EXCEPT. Använd parenteser:
SELECT id FROM a
UNION
SELECT id FROM b
INTERSECT
SELECT id FROM c;
-- means: a UNION (b INTERSECT c)
-- Use parens to force order:
(SELECT id FROM a UNION SELECT id FROM b) INTERSECT SELECT id FROM c;Prestanda
UNION sorterar för att ta bort dubbletter. INTERSECT och EXCEPT utför liknande arbete. För stora mängder bör du föredra JOIN/EXISTS-mönster och bara använda mängdoperatorer när semantiken passar tydligt.
Standard-SQL jämfört med leverantörsspecifika egenheter
Alla tre finns i PostgreSQL. MySQL lade till INTERSECT och EXCEPT först i version 8.0.31; äldre versioner efterliknar dem med JOIN/NOT IN.
Sammanfattning
Mängdoperatorer uttrycker OR/AND/MINUS över rader.
- UNION — kombinera och ta bort dubbletter
- INTERSECT — gemensamma rader
- EXCEPT — A minus B
Snabbkontroll
Vilken mängdoperator returnerar ”rader i A som INTE finns i B”?
Lär dig SQL med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 46
- Lektioner
- 183
Vanliga frågor
Är lektionen ”UNION, INTERSECT, EXCEPT” gratis?
Ja – hela texten till ”UNION, INTERSECT, EXCEPT” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”UNION, INTERSECT, EXCEPT”?
Kombinera kompatibla resultatmängder med UNION, hitta gemensamma rader med INTERSECT och hitta skillnaden med EXCEPT. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig SQL Academy?
Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”UNION, INTERSECT, EXCEPT”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här SQL Academy-lektionen?
Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- UNION, INTERSECT, EXCEPT
- UNION ALL kontra UNION (kostnad för deduplicering)
- CASE-uttryck och pivotfrågor
- Korstabellsmönster (PostgreSQL crosstab())