Podsumowanie: w tym samouczku dowiesz się o klauzuli MySQL LEFT JOIN
I jak zastosować ją do zapytania danych z dwóch lub więcej tabel.
Wprowadzenie do MySQL LEFT JOIN
LEFT JOIN
pozwala na zapytanie danych z dwóch lub więcej tabel. Podobnie doINNER JOIN
, LEFT JOIN
jest opcjonalną klauzulą SELECT
, która pojawia się bezpośrednio po FROM
klauzuli.,
Załóżmy, że chcesz połączyć dwie tabele t1
I t2
.
poniższe polecenie pokazuje, jak używać klauzuli LEFT JOIN
aby połączyć dwie tabele:
Code language: SQL (Structured Query Language) (sql)
Kiedy używasz klauzuli LEFT JOIN
, wprowadza się pojęcia lewej i prawej tabeli.
w powyższej składni t1
jest lewą tabelą, a t2
jest prawą tabelą.,
klauzulaLEFT JOIN
wybiera dane z lewej tabeli (t1
). Pasuje do każdego wiersza z lewej tabeli (t1
) z każdym wierszem z prawej tabeli (t2
) na podstawie join_condition
.
Jeśli wiersze z obu tabel powodują, że warunek join zostanie oceniony naTRUE
,LEFT JOIN
łączy kolumny wierszy z obu tabel w nowy wiersz i zawiera ten nowy wiersz w wierszach wynikowych.,
jeśli wiersz z lewej tabeli (t1
) nie pasuje do żadnego wiersza z prawej tabeli (t2
),LEFT JOIN
nadal łączy kolumny wierszy z obu tabel w nowy wiersz i zawiera nowy wiersz w wierszach wynikowych. Jednak używa NULL
dla wszystkich kolumn wiersza z prawej tabeli.
innymi słowy, LEFT JOIN
zwraca wszystkie wiersze z lewej tabeli niezależnie od tego, czy wiersz z lewej tabeli ma pasujący wiersz z prawej tabeli, czy nie., Jeśli nie ma dopasowania, kolumny wiersza z prawej tabeli będą zawierać NULL
.
poniższy diagram Venn pomaga Ci zobrazować działanie klauzuli LEFT JOIN
:
MySQL LEFT JOIN examples
weźmy kilka przykładów użycia klauzuli LEFT JOIN
.,
1) przy użyciu MySQL LEFT JOIN klauzula do łączenia dwóch tabel
zobacz następujące tabelecustomers
Iorders
w przykładowej bazie danych.
każdy klient może mieć zero lub więcej zamówień, podczas gdy każde zamówienie musi należeć do jednego klienta.,
to zapytanie wykorzystuje klauzulę LEFT JOIN
, aby znaleźć wszystkich klientów i ich zamówienia:
Code language: SQL (Structured Query Language) (sql)
Alternatywnie, można zapisać kilka wpisów za pomocą aliasów tabeli:
Code language: SQL (Structured Query Language) (sql)
w tym przykładzie:
customers
jest lewą tabelą iorders
jest właściwą tabelą.- klauzula
LEFT JOIN
zwraca wszystkich klientów, w tym klientów, którzy nie mają zamówienia., Jeśli klient nie ma zamówienia, wartości w kolumnieorderNumber
Istatus
sąNULL
.,
ponieważ zarówno klienci tabeli, jak i zamówienia mają tę samą nazwę kolumny ( customerNumber
) w warunku łączenia z operatorem equal, możesz użyć składni w następujący sposób:
Code language: SQL (Structured Query Language) (sql)
następujące klauzule są równoważne:
Code language: SQL (Structured Query Language) (sql)
i
Code language: SQL (Structured Query Language) (sql)
jeśli zastąpisz LEFT JOIN
klauzulą INNER JOIN
, otrzymasz tylko klientów, którzy mają co najmniej jedno zamówienie.,
2) Używanie MySQL LEFT JOIN klauzula do znajdowania niepasujących wierszy
LEFT JOIN
klauzula jest bardzo przydatna, gdy chcesz znaleźć wiersze w tabeli, która nie ma pasującego wiersza z innej tabeli.,”>