logo

MySQL DELETE JOIN

Dotaz DELETE je podčasťou jazyka na manipuláciu s údajmi, ktorý sa používa na odstránenie riadkov z tabuliek. Ako odstrániť pripojenie MySQL je veľmi populárna otázka počas rozhovorov. Nie je jednoduchý proces používať príkazy delete join v MySQL. V tejto časti popíšeme, ako môžete odstrániť záznamy z viacerých tabuliek pomocou INNER JOIN alebo LEFT JOIN v dotaze DELETE.

DELETE JOIN pomocou INNER JOIN

Dotaz Inner Join možno použiť s dotazom Delete na odstránenie riadkov z jednej tabuľky a zodpovedajúcich riadkov z druhej tabuľky, ktoré spĺňajú zadanú podmienku.

Syntax

Nasledujú syntaxe, ktoré možno použiť na odstránenie riadkov z viac ako jednej tabuľky pomocou funkcie Inner Join .

 DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition 

Tu je cieľom názov tabuľky, z ktorej chceme odstrániť riadky podľa zadanej podmienky. Predpokladajme, že chcete odstrániť riadky z tabuľky T1 a T2 kde student_id = 2 , potom to možno zapísať ako nasledujúce vyhlásenie:

Madhubala
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

Vo vyššie uvedenej syntaxi je cieľová tabuľka (T1 a T2) zapísaná medzi kľúčové slová DELETE a FROM. Ak odtiaľ vynecháme akýkoľvek názov tabuľky, potom vymazať výpis odstráni iba riadky z jednej tabuľky. Výraz napísaný s ON kľúčové slovo je stav, ktorý sa zhoduje s riadkami v tabuľkách, ktoré sa chystáte odstrániť.

Príklad

Predpokladajme, že máme dva stoly študentov a kontakty ktorý obsahuje nasledujúce údaje:

Tabuľka: študenti

MySQL DELETE JOIN

Tabuľka: kontakty

MySQL DELETE JOIN

Vykonajte nasledujúci dotaz, aby ste pochopili Odstrániť pripojenie s Inner Join. Tento príkaz vymaže riadok, ktorý má rovnaké ID v oboch tabuľkách.

 DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4; 

Po úspešnom vykonaní sa zobrazí nasledujúca správa:

význam dhl
MySQL DELETE JOIN

Teraz spustite nasledujúci dotaz na overenie úspešne odstránených riadkov.

 mysql> SELECT * FROM students; mysql> SELECT * FROM contacts; 

Môžete vidieť, že riadky, kde student_id=4 sa vymaže.

MySQL DELETE JOIN MySQL DELETE JOIN

VYMAZAŤ PRIPOJENIE pomocou ĽAVÉHO PRIPOJENIA

Klauzulu LEFT JOIN sme sa už naučili s príkazom SELECT, ktorý vráti všetky riadky z ľavej (prvej) tabuľky a zhodné alebo nezhodné riadky z inej tabuľky. Podobne môžeme použiť aj klauzulu LEFT JOIN s kľúčovým slovom DELETE na vymazanie riadkov z ľavej (prvej) tabuľky, ktorá nemá zhodné riadky z pravej (druhej) tabuľky.

Nasledujúci dotaz to vysvetľuje jasnejšie, kde príkaz DELETE používa LEFT JOIN na odstránenie riadkov Stôl 1 ktorý nemá zodpovedajúce riadky v Tabuľka2 :

 DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL; 

Vo vyššie uvedenom dotaze si všimnite, že tabuľku 1 použijeme iba s kľúčovým slovom DELETE, nie oboje ako v príkaze INNER JOIN.

Príklad

Poďme vytvoriť tabuľku ' kontakty ' a ' zákazníkov “ v databáze, ktorá obsahuje nasledujúce údaje:

Tabuľka: kontakty

zákony ekvivalencie
MySQL DELETE JOIN

Tabuľka: zákazníci

MySQL DELETE JOIN

Vykonajte nasledujúci príkaz, ktorý odstráni zákazníka, ktorý nemá a mobilný telefón číslo:

 DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL; 

Po úspešnom vykonaní sa zobrazí nasledujúca správa:

MySQL DELETE JOIN

Teraz spustite nasledujúci dotaz na overenie úspešne odstránených riadkov.

 mysql> SELECT * FROM customers; 

Môžete vidieť, že riadky, kde zákazník nemá číslo mobilného telefónu, sú vymazané.

MySQL DELETE JOIN