sammanfattning: i den här handledningen kommer du att lära dig om MySQL LEFT JOIN
– klausulen och hur man applicerar den för att fråga data från två eller flera tabeller.
introduktion till MySQL LEFT JOIN
LEFT JOIN
låter dig fråga data från två eller flera tabeller. I likhet medINNER JOIN
– klausulen ärLEFT JOIN
en valfri klausul iSELECT
– satsen, som visas omedelbart efterFROM
– klausulen.,
Antag att du vill ansluta till två tabellert1
ocht2
.
följande uttalande visar hur du använder klausulenLEFT JOIN
för att ansluta till de två tabellerna:
Code language: SQL (Structured Query Language) (sql)
När du använder klausulen LEFT JOIN
introduceras begreppen i den vänstra tabellen och den högra tabellen.
i ovanstående syntax ärt1
den vänstra tabellen ocht2
den högra tabellen.,
klausulenLEFT JOIN
väljer data från den vänstra tabellen (t1
). Den matchar varje rad från den vänstra tabellen (t1
) med varje rad från den högra tabellen (t2
) baserat påjoin_condition
.
om raderna från båda tabellerna orsakar att kopplingsförhållandet utvärderas till TRUE
, kombinerar LEFT JOIN
kolumner med rader från båda tabellerna till en ny rad och innehåller den nya raden i resultatraderna.,
om raden från den vänstra tabellen (t1
) inte matchar någon rad från den högra tabellen (t2
),LEFT JOIN
kombinerar fortfarande kolumner av rader från båda tabellerna i en ny rad och inkluderar den nya raden i resultatraderna. Den använder dockNULL
för alla kolumner i raden från den högra tabellen.
med andra ord returnerarLEFT JOIN
alla rader från den vänstra tabellen oavsett om en rad från den vänstra tabellen har en matchande rad från den högra tabellen eller inte., Om det inte finns någon matchning kommer kolumnerna i raden från den högra tabellen att innehålla NULL
.
följande Venn – diagram hjälper dig att visualisera hurLEFT JOIN
– klausulen fungerar:
MySQL Left join exempel
låt oss ta några exempel på att användaLEFT JOIN
– klausulen.,
1) Använda MySQL LEFT JOIN-klausulen för att ansluta till två tabeller
se följande tabellercustomers
ochorders
I provdatabasen.
varje kund kan ha noll eller fler beställningar medan varje order måste tillhöra en kund.,
den här frågan använder klausulen LEFT JOIN
för att hitta alla kunder och deras order:
Code language: SQL (Structured Query Language) (sql)
Alternativt kan du spara Vissa skrivningar med hjälp av tabellalias:
Code language: SQL (Structured Query Language) (sql)
i det här exemplet:
customers
är den vänstra tabellen ochorders
är den högra tabellen.- klausulen
LEFT JOIN
returnerar alla kunder inklusive kunder som inte har någon beställning., Om en kund inte har någon order är värdena i kolumnenorderNumber
ochstatus
NULL
.,
eftersom både tabellkunder och beställningar har samma kolumnnamn ( customerNumber
) I kopplingsförhållandet med Equal-operatören kan du använda syntaxen enligt följande:
Code language: SQL (Structured Query Language) (sql)
följande klausuler är likvärdiga:
Code language: SQL (Structured Query Language) (sql)
och
Code language: SQL (Structured Query Language) (sql)
om du ersätter klausulen LEFT JOIN
med klausulen INNER JOIN
får du de enda kunder som har minst en order.,
2) använda MySQL LEFT JOIN-klausulen för att hitta oöverträffade rader
LEFT JOIN
– klausulen är mycket användbar när du vill hitta rader i en tabell som inte har en matchande rad från en annan tabell.,”>
för att hitta kunder som inte har någon order:
Code language: SQL (Structured Query Language) (sql)
3) använda MySQL LEFT JOIN för att gå med i tre tabeller
se följande tre tabeller employees
, customers
, och payments
:
det här exemplet använder två LEFT JOIN
klausuler för att gå med i de tre tabellerna: employees
, customers
och payments
.,
Code language: SQL (Structured Query Language) (sql)
den här bilden visar den partiella utmatningen:
hur det fungerar.
- den första
LEFT JOIN
returnerar alla anställda och kunder som representerade varje anställd ellerNULL
om den anställde inte ansvarar för någon kund. - den andra
LEFT JOIN
returnerar betalningar för varje kund som representeras av en anställd ellerNULL
om kunden inte har någon betalning.
villkor i where klausul vs., På klausul
se följande exempel.
Code language: SQL (Structured Query Language) (sql)
det här exemplet använde klausulenLEFT JOIN
för att fråga data från tabellernaorders
ochorderDetails
. Frågan returnerar ordern och dess radposter i ordernumret 10123
.,
om du flyttar villkoret från klausulen WHERE
till klausulen ON
:
Code language: SQL (Structured Query Language) (sql)
det kommer att ha en annan betydelse.,
i det här fallet returnerar frågan alla beställningar men bara ordern10123
kommer att ha linjeobjekt associerade med den som i följande bild:
Observera att förINNER JOIN
– klausulen, villkoret iON
– klausulen motsvarar villkoret iWHERE
– klausulen.
i den här handledningen har du lärt dig hur du använder MySQL LEFT JOIN
– klausulen för att gå med i data från två eller flera tabeller.,
- var den här handledningen till hjälp?
- YesNo