logo

MySQL DELETE JOIN

DELETE upit je poddio jezika za manipulaciju podacima koji se koristi za uklanjanje redaka iz tablica. Kako izbrisati pridruživanje MySQL je vrlo popularno pitanje tijekom intervjua. Nije jednostavan postupak korištenja naredbi za brisanje spoja u MySQL-u. U ovom ćemo odjeljku opisati kako možete izbrisati zapise iz više tablica upotrebom INNER JOIN ili LEFT JOIN u upitu DELETE.

DELETE JOIN s INNER JOIN

Upit za unutarnje spajanje može se koristiti s upitom za brisanje za uklanjanje redaka iz jedne tablice i odgovarajućih redaka iz druge tablice koji ispunjavaju navedeni uvjet.

Sintaksa

Sljedeća je sintaksa koja se može koristiti za brisanje redaka iz više od jedne tablice pomoću unutarnjeg spajanja.

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

Ovdje je cilj naziv tablice iz koje želimo obrisati retke ispunjavanjem navedenog uvjeta. Pretpostavimo da želite izbrisati retke iz tablice T1 i T2 gdje student_id = 2 , onda se može napisati kao sljedeća izjava:

10 ml u oz
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

U gornjoj sintaksi, ciljna tablica (T1 i T2) napisana je između ključnih riječi DELETE i FROM. Ako tamo izostavimo bilo koji naziv tablice, onda je izbrisati izjavu uklanja samo retke iz jedne tablice. Izraz napisan s NA ključna riječ je uvjet koji odgovara recima u tablicama koje ćete izbrisati.

Primjer

Pretpostavimo da imamo dvije tablice učenicima i kontakti koji sadrži sljedeće podatke:

Stol: učenici

MySQL DELETE JOIN

Tablica: kontakti

stvaranje stolova od lateksa
MySQL DELETE JOIN

Izvršite sljedeći upit da biste razumjeli Izbriši pridruživanje s unutarnjim spajanjem. Ova izjava briše redak koji ima isti ID u obje tablice.

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

Nakon uspješnog izvođenja, dat će sljedeću poruku:

MySQL DELETE JOIN

Sada pokrenite sljedeći upit da potvrdite da su reci uspješno izbrisani.

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

Možete vidjeti da su redovi u kojima je student_id=4 se briše.

MySQL DELETE JOIN MySQL DELETE JOIN

DELETE JOIN pomoću LIJEVOG JOIN-a

Već smo naučili klauzulu LEFT JOIN s naredbom SELECT koja vraća sve retke iz lijeve (prve) tablice i podudarne ili nepodudarne retke iz druge tablice. Slično, također možemo koristiti klauzulu LEFT JOIN s ključnom riječi DELETE za brisanje redaka iz lijeve (prve) tablice koja nema odgovarajućih redaka iz desne (druge) tablice.

Sljedeći upit jasnije objašnjava gdje naredba DELETE koristi LEFT JOIN za brisanje redaka iz Stol 1 koji nema odgovarajuće retke u Tablica2 :

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

U gornjem upitu primijetite da ćemo koristiti samo tablicu 1 s ključnom riječi DELETE, a ne oboje kao u naredbi INNER JOIN.

Primjer

Napravimo tablicu ' kontakti 'i' kupaca ' u bazi podataka koja sadrži sljedeće podatke:

Tablica: kontakti

kako koristiti mysql workbench
MySQL DELETE JOIN

Tablica: kupci

MySQL DELETE JOIN

Izvršite sljedeću naredbu koja uklanja kupca koji nema a mobitel broj:

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

Nakon uspješnog izvođenja, dat će sljedeću poruku:

MySQL DELETE JOIN

Sada pokrenite sljedeći upit da potvrdite da su reci uspješno izbrisani.

 mysql> SELECT * FROM customers; 

Možete vidjeti da su redovi u kojima kupac nema broj mobitela izbrisani.

MySQL DELETE JOIN