Oppsummering: i denne opplæringen vil du lære om MySQL LEFT JOIN
klausulen, og hvordan du skal bruke det til spørring data fra to eller flere tabeller.
Introduksjon til MySQL VENSTRE BLI med
LEFT JOIN
lar deg spørring data fra to eller flere tabeller. Lik INNER JOIN
klausulen, LEFT JOIN
er et valgfritt punkt på SELECT
uttalelse, som vises umiddelbart etter FROM
klausulen.,
Tenk deg at du ønsker å bli med i to tabeller t1
og t2
.
følgende uttalelse viser hvordan du kan bruke LEFT JOIN
klausulen til å bli med i to tabeller:
Code language: SQL (Structured Query Language) (sql)
Når du bruker LEFT JOIN
klausulen, konsepter venstre bordet, og den høyre tabellen er innført.
I over syntaks, t1
er du til venstre bord og t2
er rett bord.,
LEFT JOIN
klausulen velger data fra venstre tabellen (t1
). Det kamper hver rad fra venstre tabellen (t1
) med hver rad fra retten tabell(t2
) basert på join_condition
.
Hvis radene fra begge tabellene føre bli med tilstanden evalueres til TRUE
, LEFT JOIN
kombiner kolonner, rader fra begge bord til en ny rad, og inkluderer denne nye raden i resultatet rader.,
I tilfelle rad fra venstre tabellen (t1
) ikke samsvarer med noen rad fra høyre bord(t2
), LEFT JOIN
fortsatt kombinerer kolonner, rader fra begge tabellene inn en ny rad, og inkluderer den nye raden i resultatet rader. Imidlertid, den bruker NULL
for alle kolonnene i raden fra høyre bord.
med andre ord, LEFT JOIN
returnerer alle radene fra venstre tabellen uavhengig av om en rad fra venstre bordet har en matchende rad fra høyre bord eller ikke., Hvis det ikke er noen treff, kolonnene i raden fra høyre tabellen vil inneholde NULL
.
følgende Venn-diagram hjelper deg med å visualisere hvordan LEFT JOIN
klausulen fungerer:
MySQL VENSTRE BLI med eksempler
La oss ta noen eksempler på bruk av LEFT JOIN
klausulen.,
1) ved Hjelp av MySQL-LEFT JOIN-setningsdel til å bli med to tabeller
Se følgende tabeller customers
og orders
i eksempeldatabasen.
Hver kunde kan ha null eller flere bestillinger mens hver bestilling må tilhøre en kunde.,
Denne spørringen bruker LEFT JOIN
klausul for å finne alle kunder og deres bestillinger:
Code language: SQL (Structured Query Language) (sql)
Alternativt kan du spare litt å skrive ved hjelp av tabell aliaser:
Code language: SQL (Structured Query Language) (sql)
I dette eksempelet:
customers
er du til venstre bord ogorders
er rett bord.LEFT JOIN
klausulen gir alle kunder, inkludert kunder som har ingen ordre., Hvis en kunde har ingen ordre, verdiene i kolonnenorderNumber
ogstatus
erNULL
.,
Fordi både tabell kunder og ordrer som har samme kolonne navn ( customerNumber
) i delta tilstand med lik operatør, kan du bruke den BRUKE syntaks som følger:
Code language: SQL (Structured Query Language) (sql)
følgende setninger er tilsvarende:
Code language: SQL (Structured Query Language) (sql)
Og
Code language: SQL (Structured Query Language) (sql)
Hvis du bytter LEFT JOIN
klausulen av INNER JOIN
klausulen, vil du få det bare for kunder som har minst én ordre.,
2) ved Hjelp av MySQL-LEFT JOIN-setningsdel å finne uovertruffen rader
LEFT JOIN
klausulen er veldig nyttig når du vil finne rader i en tabell som ikke har et tilsvarende rad fra en annen tabell.,»>
for å finne kunder som har ingen rekkefølge:
Code language: SQL (Structured Query Language) (sql)
3) Ved hjelp av MySQL VENSTRE BLI med å delta i tre tabeller
Se følgende tre tabeller employees
, customers
, og payments
:
Dette eksemplet bruker to LEFT JOIN
klausuler til å delta i tre tabeller: employees
, customers
, og payments
.,
Code language: SQL (Structured Query Language) (sql)
Dette bildet viser delvis utgang:
Hvordan det fungerer.
- første
LEFT JOIN
returnerer alle ansatte og kunder, som representerte hver ansatt ellerNULL
hvis den ansatte ikke har ansvar for alle kunder. - andre
LEFT JOIN
returnerer betaling for hver kunde, representert ved en ansatt ellerNULL
hvis kunden har ingen betaling.
Tilstanden i WHERE-betingelsen vs., PÅ punkt
Se følgende eksempel.
Code language: SQL (Structured Query Language) (sql)
Dette eksemplet brukes LEFT JOIN
klausulen spørring data fra tabeller orders
og orderDetails
. Spørringen returnerer orden og sin linje av elementer av ordrenummeret 10123
.,
Imidlertid, hvis du flytter den tilstand fra WHERE
klausulen ON
klausulen:
Code language: SQL (Structured Query Language) (sql)
Det vil ha en annen betydning.,
I dette tilfellet, returnerer spørringen alle ordrer, men bare for 10123
vil ha artikler knyttet til det som i følgende bilde:
legg Merke til at for INNER JOIN
klausulen, tilstanden i ON
klausulen er tilsvarende tilstand i WHERE
klausulen.
I denne opplæringen, har du lært hvordan du bruker MySQL LEFT JOIN
klausulen til å bli med data fra to eller flere tabeller.,
- Var denne opplæringen nyttig?
- YesNo