JOINS i SQL Server: Typer med exempel
⚡ Smart sammanfattning
JOINS i SQL Server kombinerar rader från två eller flera tabeller baserat på en relaterad kolumn, med hjälp av INNER-, LEFT OUTER-, RIGHT OUTER- och FULL OUTER-kopplingar för att styra vilka matchande och icke-matchande rader som visas i resultatet.

Vad är joins i SQL Server?
Data kan hämtas från mer än en tabell med hjälp av JOIN-satsen i SQL ServerEn JOIN kombinerar rader från två eller flera tabeller baserat på en relaterad kolumn mellan dem, oftast en primär nyckel matchade till en främmande nyckelDet finns huvudsakligen fyra typer av JOINs i SQL Server:
- INNER JOIN / enkel koppling
- VÄNSTER YTTRE KOPPLING / VÄNSTER KOPPLING
- HÖGER YTTRE FÖRBINDNING / HÖGER FÖRBINDNING
- FULLSTÄNDIG YTTRE JOIN
Tabellen nedan sammanfattar vilka rader varje JOIN-typ returnerar:
| JOIN-typ | Rader returnerade |
| INNER JOIN | Endast rader där kopplingsvillkoret matchar i båda tabellerna. |
| VÄNSTER YTTRE GÅ MED | Alla rader från den vänstra tabellen, plus matchande rader i den högra tabellen (NULL-värden där ingen matchar). |
| HÖGER YTTRE JOIN | Alla rader från den högra tabellen, plus matchande rader i den vänstra tabellen (NULL-värden där ingen matchar). |
| FULLSTÄNDIG YTTRE JOIN | Alla rader från båda tabellerna, med NULL-värden där villkoret inte är uppfyllt. |
Exemplen nedan använder två Tabellerna, Studenter och Avgifter, anslöt sig till sin gemensamma antagningskolumn. Varje avsnitt förklarar en JOIN-typ med dess syntax, en bearbetad fråga och resultatet.
INNER JOIN
Denna typ av SQL Server JOIN returnerar rader från alla tabeller där join-villkoret är sant. Den använder följande syntax:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Vi kommer att använda följande två tabeller för att visa detta. Tabellen Studenter nedan listar varje student och antagningsnummer:
Avgiftstabellen nedan visar det belopp som varje antagningsnummer har betalat:
Följande kommando demonstrerar en INNER JOIN i SQL Server med ett exempel:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Kommandot returnerar följande resultat och visar endast antagningsnumren som finns i båda tabellerna:
Vi kan se vilka studenter som har betalat sin avgift. Vi använde kolumnen med gemensamma värden i båda tabellerna, vilket är antagningskolumnen.
VÄNSTER YTTRE GÅ MED
Den här typen av koppling returnerar alla rader från den vänstra tabellen plus posterna i den högra tabellen med matchande värden. Till exempel:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Koden returnerar följande resultat, keeping varje elev även när ingen avgiftsuppgift matchar:
Posterna utan matchande värden ersätts med NULLs i respektive kolumn.
HÖGER YTTRE JOIN
Denna typ av join returnerar alla rader från den högra tabellen och endast de med matchande värden i den vänstra tabellen. Till exempel:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
Satsen för OUTER JOINS i SQL Server returnerar följande resultat:
Anledningen till ovanstående utdata är att alla rader i avgiftstabellen är tillgängliga i tabellen Studenter när de matchas i antagningskolumnen.
FULLSTÄNDIG YTTRE JOIN
Den här typen av koppling returnerar alla rader från båda tabellerna, med NULL-värden där JOIN-villkoret inte är sant. Till exempel:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Koden returnerar följande resultat för FULL OUTER JOIN-frågor i SQL, och kombinerar varje rad från båda tabellerna:






