logo

MySQL LEFT JOIN

Levé spojení v MySQL se používá k dotazování záznamů z více tabulek. Tato klauzule je podobná klauzuli Inner Join, kterou lze použít s příkazem SELECT bezprostředně za klíčovým slovem FROM. Když použijeme klauzuli Left Join, vrátí všechny záznamy z první (levé) tabulky, dokonce ani žádné odpovídající záznamy nalezené z druhé (pravé) tabulky. Pokud nenajde žádný záznam shody z pravé postranní tabulky, vrátí hodnotu null.

Jinými slovy, klauzule Left Join vrátí všechny řádky z levé tabulky a odpovídající záznamy z pravé tabulky nebo vrátí hodnotu Null, pokud nebyl nalezen žádný odpovídající záznam. Toto spojení lze také nazvat a Levý vnější spoj doložka. Vnější je tedy nepovinné klíčové slovo pro použití s ​​levým spojením.

Můžeme to pochopit pomocí následující vizuální reprezentace, kde Left Joins vrátí všechny záznamy z levé tabulky a pouze odpovídající záznamy z pravé boční tabulky:

MySQL LEFT JOIN

Syntaxe MySQL LEFT JOIN

Následující syntaxe vysvětluje klauzuli Left Join pro spojení dvou nebo více tabulek:

personální výběrová komise význam
 SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition; 

Ve výše uvedené syntaxi stůl 1 je levý stůl a tabulka2 je stůl na pravé straně. Tato klauzule vrátí všechny záznamy z tabulky1 a odpovídající záznamy z tabulky2 na základě zadaného připojit podmínku .

Příklad MySQL LEFT JOIN

Vezměme si několik příkladů, abychom pochopili fungování klauzule Left Join nebo Left Outer Join:

Klauzule LEFT JOIN pro spojení dvou tabulek

Zde vytvoříme dvě tabulky ' zákazníků a ' objednávky' který obsahuje následující údaje:

Tabulka: zákazníci

tabulka popisů v mysql
MySQL LEFT JOIN

Tabulka: objednávky

MySQL LEFT JOIN

Chcete-li vybrat záznamy z obou tabulek, proveďte následující dotaz:

 SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id; 

Po úspěšném provedení dotazu poskytne následující výstup:

MySQL LEFT JOIN

MySQL LEFT JOIN s USING Clause

Tabulka zákazníci a objednávky mají stejný název sloupce, který je customer_id. V takovém případě lze pro přístup k záznamům použít také MySQL Left Join s klauzulí USING. Následující příkaz vrátí ID zákazníka, jméno zákazníka, povolání, cenu a datum pomocí klauzule Left Join s klíčovým slovem USING.

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id); 

Výše uvedené prohlášení poskytne následující výstup:

MySQL LEFT JOIN

MySQL LEFT JOIN s Group By Clause

Levé spojení lze také použít s klauzulí GROUP BY. Následující příkaz vrátí ID zákazníka, jméno zákazníka, kvalifikaci, cenu a datum pomocí klauzule Left Join s klauzulí GROUP BY.

 SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price; 

Výše uvedené prohlášení poskytne následující výstup:

MySQL LEFT JOIN

VLEVO JOIN s klauzulí WHERE

Klauzule WHERE se používá k vrácení filtr výsledek z tabulky. Následující příklad to ilustruje s klauzulí Left Join:

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500; 

Toto prohlášení dává níže uvedený výsledek:

MySQL LEFT JOIN

MySQL LEFT JOIN Multiple Tables

Již jsme vytvořili dvě tabulky s názvem ' zákazníků a ' objednávky' . Vytvořme ještě jednu tabulku a pojmenujeme ji jako „ kontakty“, který obsahuje následující údaje:

MySQL LEFT JOIN

Provedením následujícího příkazu se připojíte ke třem tabulkovým zákazníkům, objednávkám a kontaktům:

rozdíl mezi láskou a láskou
 SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income; 

Po úspěšném provedení výše uvedeného dotazu poskytne následující výstup:

MySQL LEFT JOIN

Použití klauzule LEFT JOIN k získání neshodných záznamů

Klauzule LEFT JOIN je také užitečná v takovém případě, kdy chceme v tabulce získat záznamy, které neobsahují žádné odpovídající řádky dat z jiné tabulky.

Můžeme to pochopit pomocí následujícího příkladu, který používá klauzuli LEFT JOIN k nalezení zákazníka, který nemá číslo mobilního telefonu:

 SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ; 

Výše uvedený příkaz vrátí následující výstup:

MySQL LEFT JOIN

Rozdíl mezi klauzulí WHERE a ON v MySQL LEFT JOIN

V LEFT Join dává podmínka WHERE a ON jiný výsledek. Můžeme vidět následující dotazy, abychom pochopili jejich rozdíly:

Klauzule WHERE

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500; 

Poskytne následující výstup, který vrátí:

řetězec do json java
MySQL LEFT JOIN

Ustanovení ON

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500; 

Poskytne následující výstup:

MySQL LEFT JOIN

POZNÁMKA: Podmínka WHERE a ON v klauzuli Inner Join vždy vrátí ekvivalentní výsledky.