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
Tablica: kontakti
stvaranje stolova od lateksa
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:
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.
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
Tablica: kupci
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:
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.