logo

MySQL DELETE JOIN

DELETE vaicājums ir datu apstrādes valodas apakšdaļa, ko izmanto rindu noņemšanai no tabulām. Kā izdzēst pievienošanos MySQL ir ļoti populārs jautājums interviju laikā. Nav viegls process izmantot pievienošanās dzēšanas paziņojumus pakalpojumā MySQL. Šajā sadaļā mēs aprakstīsim, kā varat dzēst ierakstus no vairākām tabulām, vaicājumā DELETE izmantojot INNER JOIN vai LEFT JOIN.

DZĒST PIEVIENOŠANOS, izmantojot IEKŠĒJO PIEVIENOŠANOS

Vaicājumu Inner Join var izmantot kopā ar vaicājumu Dzēst, lai noņemtu rindas no vienas tabulas un atbilstošās rindas no otras tabulas, kas atbilst norādītajam nosacījumam.

Sintakse

Tālāk ir norādīta sintakse, ko var izmantot, lai dzēstu rindas no vairāk nekā vienas tabulas, izmantojot iekšējo savienojumu.

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

Šeit mērķis ir tabulas nosaukums, no kuras mēs vēlamies dzēst rindas, atbilstot norādītajam nosacījumam. Pieņemsim, ka vēlaties dzēst rindas no tabulas T1 un T2 kur studenta_id = 2 , tad to var uzrakstīt kā šādu paziņojumu:

java savienojamība
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

Iepriekš minētajā sintaksē mērķa tabula (T1 un T2) ir ierakstīta starp atslēgvārdiem DELETE un FROM. Ja mēs izlaidīsim jebkuru tabulas nosaukumu, tad dzēst paziņojumu tikai noņem rindas no vienas tabulas. Izteiciens rakstīts ar IESL atslēgvārds ir nosacījums, kas atbilst tabulu rindām, kurās vēlaties dzēst.

Piemērs

Pieņemsim, ka mums ir divas tabulas studenti un kontaktpersonas kas satur šādus datus:

Tabula: studenti

MySQL DELETE JOIN

Tabula: kontakti

MySQL DELETE JOIN

Izpildiet šo vaicājumu, lai saprastu Dzēst pievienošanos ar iekšējo pievienošanos. Šis paziņojums izdzēš rindu, kurai ir vienāds ID abās tabulās.

npm tīru kešatmiņu
 DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4; 

Pēc veiksmīgas izpildes tiks parādīts šāds ziņojums:

MySQL DELETE JOIN

Tagad palaidiet šo vaicājumu, lai pārbaudītu, vai rindas ir veiksmīgi izdzēstas.

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

Var redzēt, ka rindas, kurās ir studenta_id=4 ir dzēsts.

MySQL DELETE JOIN MySQL DELETE JOIN

DZĒST PIEVIENOTIES ar LEFT JOIN

Mēs jau esam iemācījušies LEFT JOIN klauzulu ar SELECT paziņojumu, kas atgriež visas rindas no kreisās (pirmās) tabulas un atbilstošās vai neatbilstošās rindas no citas tabulas. Līdzīgi mēs varam izmantot arī LEFT JOIN klauzulu ar atslēgvārdu DELETE, lai dzēstu rindas no kreisās (pirmās) tabulas, kurām nav atbilstošu rindu no labās (otrās) tabulas.

Šis vaicājums skaidrāk izskaidro, kur DELETE priekšraksts izmanto LEFT JOIN, lai dzēstu rindas no 1. tabula kam nav atbilstošu rindu 2. tabula :

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

Iepriekš minētajā vaicājumā ņemiet vērā, ka mēs izmantosim tikai Table1 ar atslēgvārdu DELETE, nevis abus, kā tas tika darīts priekšrakstā INNER JOIN.

Piemērs

Izveidosim tabulu kontaktpersonas ' un ' klientiem ' datubāzē, kurā ir šādi dati:

Tabula: kontakti

entītiju relāciju
MySQL DELETE JOIN

Tabula: klienti

MySQL DELETE JOIN

Izpildiet šo paziņojumu, kas noņem klientu, kuram nav a Mobilais telefons numurs:

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

Pēc veiksmīgas izpildes tiks parādīts šāds ziņojums:

MySQL DELETE JOIN

Tagad palaidiet šo vaicājumu, lai pārbaudītu, vai rindas ir veiksmīgi izdzēstas.

 mysql> SELECT * FROM customers; 

Var redzēt, ka tiek dzēstas rindas, kurās klientam nav mobilā tālruņa numura.

MySQL DELETE JOIN