SQL Academy · Lektion

UNION, INTERSECT, EXCEPT

Kombinera kompatibla resultatmängder med UNION, hitta gemensamma rader med INTERSECT och hitta skillnaden med EXCEPT.

Lektion 1 av 413 steg

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 B
  • EXCEPT — 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”?

Gratis att börja

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

  1. UNION, INTERSECT, EXCEPT
  2. UNION ALL kontra UNION (kostnad för deduplicering)
  3. CASE-uttryck och pivotfrågor
  4. Korstabellsmönster (PostgreSQL crosstab())
← Tillbaka till SQL Academy