Resumé: i denne tutorial vil du lære om MySQL LEFT JOIN
klausul, og hvordan man anvender det til at forespørge på data fra to eller flere tabeller.
Introduktion til MySQL LEFT JOIN
LEFT JOIN
giver dig mulighed for at forespørge på data fra to eller flere tabeller. Ligner INNER JOIN
klausul, LEFT JOIN
er en valgfri bestemmelse af SELECT
erklæring, der vises umiddelbart efter FROM
klausul.,
Antag, at du vil deltage i to tabeller t1
og t2
.
Den følgende sætning viser, hvordan man bruger LEFT JOIN
klausulen til at deltage i to tabeller:
Code language: SQL (Structured Query Language) (sql)
Når du bruger LEFT JOIN
klausul, begreber af den venstre tabel, og den højre tabel er indført.
i ovenstående syntaks er t1
den venstre tabel og t2
den rigtige tabel.,
LEFT JOIN
klausul vælger data, der starter fra venstre tabel (t1
). Det passer hver række fra venstre tabel (t1
) med hver række fra højre tabel(t2
baseret på join_condition
.
Hvis rækkerne fra begge tabeller forårsager, at sammenføjningstilstanden evalueres til TRUE
, kombinerer LEFT JOIN
kolonner med rækker fra begge tabeller til en ny række og inkluderer denne nye række i resultatrækkerne.,
I tilfælde af at række fra venstre tabel (t1
), ikke stemmer overens med nogen træk fra den højre tabel(t2
), LEFT JOIN
stadig kombinerer kolonner, rækker fra begge tabeller i en ny række og omfatter den nye række i resultatet rækker. Det bruger dog NULL
for alle kolonnerne i rækken fra højre tabel.
med andre ord, LEFT JOIN
returnerer alle rækker fra venstre tabel, uanset om en række fra venstre tabel har en matchende række fra højre tabel eller ej., Hvis der ikke er nogen match, vil kolonnerne i rækken fra højre tabel indeholde NULL
.
følgende Venn-diagram hjælper dig med at visualisere, hvordan LEFT JOIN
klausul værker:
MySQL-LEFT JOIN eksempler
Lad os tage nogle eksempler på brug af LEFT JOIN
klausul.,
1) ved Hjælp af MySQL LEFT JOIN-delsætning til at deltage i to tabeller
Se følgende tabeller customers
og orders
i eksempeldatabasen.
den Enkelte kunde kan have nul eller flere ordrer, mens hver ordre, skal tilhøre en kunde.,
Denne forespørgsel bruger LEFT JOIN
klausul at finde alle kunder og deres ordrer:
Code language: SQL (Structured Query Language) (sql)
Alternativt, kan du spare nogle at skrive ved hjælp af tabel aliaser:
Code language: SQL (Structured Query Language) (sql)
I dette eksempel:
customers
er den venstre tabel, ogorders
er det rigtige bord.LEFT JOIN
klausul returnerer alle kunder inklusive de kunder, der ikke har nogen ordre., Hvis en kunde ikke har nogen ordre, er værdierne i kolonnenorderNumber
ogstatus
NULL
.,
Fordi begge tabellen kunder og ordrer, har de samme kolonne navn ( customerNumber
) i slutte tilstand med den samme operatør, du kan bruge ved HJÆLP af syntaks som følger:
Code language: SQL (Structured Query Language) (sql)
følgende bestemmelser svarer:
Code language: SQL (Structured Query Language) (sql)
Og
Code language: SQL (Structured Query Language) (sql)
Hvis du erstatte LEFT JOIN
bestemmelse af INNER JOIN
klausul, vil du få det kun kunder, som har mindst én ordre.,
2) ved Hjælp af MySQL LEFT JOIN-delsætning til at finde uovertruffen rækker
LEFT JOIN
klausul er meget nyttigt, når du vil finde rækker i en tabel, der ikke har en matchende linje fra en anden tabel.,”>
til at finde kunder, der ikke har orden:
Code language: SQL (Structured Query Language) (sql)
3) Ved hjælp af MySQL VENSTRE DELTAG for at deltage i tre tabeller
Se de følgende tre tabeller employees
customers
og payments
:
Dette eksempel bruger to LEFT JOIN
klausuler til at deltage i de tre tabeller: employees
customers
og payments
.,
Code language: SQL (Structured Query Language) (sql)
Dette billede viser delvis output:
Hvordan det virker.
- første
LEFT JOIN
returnerer alle medarbejdere og kunder, der repræsenterede den enkelte medarbejder ellerNULL
hvis medarbejderen ikke ansvarlig for enhver kunde. - den anden
LEFT JOIN
returnerer betalinger for hver kunde repræsenteret af en medarbejder ellerNULL
Hvis kunden ikke har nogen betaling.
tilstand i hvor klausul vs., På klausul
se følgende eksempel.
Code language: SQL (Structured Query Language) (sql)
Dette eksempel brugte LEFT JOIN
klausul til at forespørge på data fra tabeller orders
og orderDetails
. Forespørgslen returnerer ordren og dens linjeposter med ordrenummeret 10123
.,
Men, hvis du flytter den betingelse fra WHERE
bestemmelse ON
klausul:
Code language: SQL (Structured Query Language) (sql)
Det vil have en anden betydning.,
I dette tilfælde, at forespørgslen returnerer alle ordrer, men kun for 10123
vil have linjeposter, der er forbundet med det, som i følgende billede:
Bemærk, at for INNER JOIN
bestemmelse, betingelse i ON
bestemmelse svarer til den tilstand, i WHERE
klausul.
i denne tutorial har du lært, hvordan du bruger Mys .l LEFT JOIN
klausul til at tilslutte data fra to eller flere tabeller.,
- var denne vejledning nyttig?
- YesNo