Sådan fungerer INNER JOIN
Forstå INNER JOIN som et filtreret kartesisk produkt, skriv joinbetingelser, og læs EXPLAIN-output for joins.
Sådan fungerer INNER JOIN er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 2 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.
INNER JOIN
INNER JOIN returnerer kun rækker, der har et matchende par i BEGGE tabeller, baseret på ON-betingelsen.
Grundlæggende INNER JOIN
Hent hver ordre med dens bruger:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON u.id = o.user_id;
-- INNER is the default — you can also write:
SELECT o.id, o.total, u.email
FROM orders o
JOIN users u ON u.id = o.user_id;Flere betingelser i ON
ON-klausulen er et almindeligt boolesk udtryk:
SELECT *
FROM events e
JOIN sessions s
ON s.user_id = e.user_id
AND e.created_at BETWEEN s.start_at AND s.end_at;Aliaser
Aliaser gør forespørgsler kortere og forhindrer tvetydige kolonnereferencer:
SELECT o.id, u.email
FROM orders AS o -- AS is optional
JOIN users AS u ON u.id = o.user_id;JOIN af tre eller flere tabeller
Kæd joins sammen ved at gentage JOIN-klausulen:
SELECT o.id, u.email, p.name AS product
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;USING (column)
Når join-kolonnen har det samme navn i begge tabeller, kan du skrive USING — så fjernes den dobbelte kolonne fra outputtet:
SELECT o.id, total, email
FROM orders
JOIN users USING (user_id); -- requires both tables to have user_idNATURAL JOIN
Joiner på alle kolonner med samme navn — pas på: løsningen bliver skrøbelig, når der tilføjes kolonner.
-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;JOIN-betingelser kontra WHERE
For INNER JOIN er en betingelse i ON logisk ækvivalent med en i WHERE. Konventionen er, at filtre, der definerer JOIN-relationen, placeres i ON, mens rækkefiltre placeres i WHERE.
SELECT * FROM orders o
JOIN users u ON u.id = o.user_id -- join condition
WHERE u.country = 'US'; -- row filterResultatmultiplikation
Hvis en række i A matcher tre rækker i B, indeholder resultatet tre rækker. Det er normalt — men overraskende, hvis du glemmer det. Aggregerer du? Brug COUNT(*) med omtanke.
Forpremiere på selv-JOIN
Du kan joine en tabel med sig selv ved at give hver forekomst et forskelligt alias:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Ydeevne for INNER JOIN
Indre joins er hurtige, når:
- Join-kolonnen er indekseret (især FK-siden)
- Den ene tabel er lille (hash-join), eller begge tabeller er sorterede (merge-join)
- Du filtrerer tidligt for at holde antallet af mellemliggende rækker lavt
Opsummering
INNER JOIN beholder kun matchende par.
- JOIN = INNER JOIN som standard
- ON udtrykker join-betingelsen
- Aliaser holder forespørgsler korte
- Join-kolonner bør være indekserede
Hurtigt tjek
Hvad returnerer orders INNER JOIN users ON users.id = orders.user_id, når en ordre ikke har en matchende bruger (en forældreløs ordre)?
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 “Sådan fungerer INNER JOIN” gratis?
Ja — hele teksten til “Sådan fungerer INNER JOIN” 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 “Sådan fungerer INNER JOIN”?
Forstå INNER JOIN som et filtreret kartesisk produkt, skriv joinbetingelser, og læs EXPLAIN-output for joins. 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 2 af 4.
Hvor lang tid tager lektionen “Sådan fungerer INNER JOIN”?
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
- Hvorfor joins? (genopfriskning af den relationelle model)
- Sådan fungerer INNER JOIN
- LEFT/RIGHT JOIN og OUTER JOINs
- Selv-joins og aliaser