SQL Academy · leksjon

UNION, INTERSECT, EXCEPT

Kombiner kompatible resultater med UNION, finn felles rader med INTERSECT, og finn forskjellen med EXCEPT.

Leksjon 1 av 413 trinn

UNION, INTERSECT, EXCEPT er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Oversikt over mengdeoperatorer

Tre mengdeoperatorer kombinerer resultatsett rad for rad:

  • UNION — rader i A ELLER B (uten duplikater)
  • INTERSECT — rader i A OG B
  • EXCEPT — rader i A, men IKKE i B

UNION

Kombinerer to resultatsett og fjerner duplikater:

SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;

Kolonnekompatibilitet

Begge spørringene må ha samme antall 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

Rader som finnes i begge spørringene:

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ørste spørringen, men ikke i den andre:

SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.

ORDER BY med mengdeoperatorer

ORDER BY gjelder for hele det kombinerte resultatet. Plasser den til slutt:

SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;

Mengdeoperatorer og NULL-verdier

For mengdeoperatorer behandles to NULL-verdier som like — UNION fjerner duplikater blant dem, og INTERSECT matcher dem. (Dette er annerledes enn NULL = NULL i WHERE.)

Mengdeoperatorer på underforespørsler

Sett underforespørsler i parentes for tydelighet og for å 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);

Operatorpresedens

INTERSECT binder sterkere enn UNION/EXCEPT. Bruk 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;

Ytelse

UNION sorterer for å fjerne duplikater. INTERSECT og EXCEPT gjør tilsvarende arbeid. For store mengder bør De foretrekke mønstre med JOIN/EXISTS og bare bruke mengdeoperatorer når semantikken passer tydelig.

Standard-SQL kontra leverandørspesifikke avvik

Alle tre finnes i PostgreSQL. MySQL la først til INTERSECT og EXCEPT i 8.0.31; eldre versjoner etterligner dem med JOIN/NOT IN.

Oppsummering

Mengdeoperatorer uttrykker OR/AND/MINUS over rader.

  • UNION — kombinerer og fjerner duplikater
  • INTERSECT — felles rader
  • EXCEPT — A minus B

Hurtigsjekk

Hvilken mengdeoperator returnerer «rader i A som IKKE finnes i B»?

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «UNION, INTERSECT, EXCEPT» gratis?

Ja – hele teksten i «UNION, INTERSECT, EXCEPT» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «UNION, INTERSECT, EXCEPT»?

Kombiner kompatible resultater med UNION, finn felles rader med INTERSECT, og finn forskjellen med EXCEPT. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «UNION, INTERSECT, EXCEPT»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. UNION, INTERSECT, EXCEPT
  2. UNION ALL kontra UNION (kostnad ved deduplisering)
  3. CASE-uttrykk og pivottabeller
  4. Krysstabellmønstre (PostgreSQL crosstab())
← Tilbake til SQL Academy