UNION, INTERSECT, EXCEPT
Kombinér kompatible resultatsæt med UNION, find fælles rækker med INTERSECT, og find forskellen med EXCEPT.
UNION, INTERSECT, EXCEPT er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
Oversigt over mængdeoperationer
Tre mængdeoperatorer kombinerer resultatsæt række for række:
UNION— rækker i A ELLER B (uden dubletter)INTERSECT— rækker i A OG BEXCEPT— rækker i A, men IKKE i B
UNION
Kombinér to resultatsæt, og fjern dubletter:
SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;Kolonnekompatibilitet
Begge forespørgsler skal have samme antal kolonner og kompatible 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
Rækker, der findes i begge forespørgsler:
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
Rækker i den første forespørgsel, men ikke i den anden:
SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.ORDER BY med mængdeoperatorer
ORDER BY gælder for hele det kombinerede resultat. Placer det til sidst:
SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;Mængdeoperatorer og NULL-værdier
For mængdeoperatorer behandles to NULL-værdier som ens — UNION fjerner dubletter blandt dem, og INTERSECT matcher dem. Det er anderledes end NULL = NULL i WHERE.
Mængdeoperatorer på underforespørgsler
Sæt underforespørgsler i parentes for tydelighedens skyld og for at kombinere 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 binder stærkere end UNION/EXCEPT. Brug 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;Ydeevne
UNION sorterer for at fjerne dubletter. INTERSECT og EXCEPT udfører tilsvarende arbejde. For store sæt bør du foretrække JOIN-/EXISTS-mønstre og kun bruge mængdeoperatorer, når betydningen passer tydeligt.
Standard-SQL vs leverandørspecifikke særheder
Alle tre findes i PostgreSQL. MySQL tilføjede først INTERSECT og EXCEPT i 8.0.31; ældre versioner efterligner dem med JOIN/NOT IN.
Opsummering
Mængdeoperatorer udtrykker OR/AND/MINUS over rækker.
- UNION — kombinér og fjern dubletter
- INTERSECT — fælles rækker
- EXCEPT — A minus B
Hurtigt tjek
Hvilken mængdeoperator returnerer rækker i A, der IKKE findes i B?
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “UNION, INTERSECT, EXCEPT” gratis?
Ja — hele teksten til “UNION, INTERSECT, EXCEPT” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “UNION, INTERSECT, EXCEPT”?
Kombinér kompatible resultatsæt med UNION, find fælles rækker med INTERSECT, og find forskellen med EXCEPT. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “UNION, INTERSECT, EXCEPT”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- UNION, INTERSECT, EXCEPT
- UNION ALL kontra UNION (omkostninger ved deduplikering)
- CASE-udtryk og pivotforespørgsler
- Crosstab-mønstre (PostgreSQL crosstab())