La consulta DELETE és una subpart del llenguatge de manipulació de dades que s'utilitza per eliminar les files de les taules. Com esborrar unir-se MySQL és una pregunta molt popular durant les entrevistes. No és un procés fàcil utilitzar les instruccions delete join a MySQL. En aquesta secció, descriurem com podeu suprimir registres de diverses taules amb l'ús d'INNER JOIN o LEFT JOIN a la consulta DELETE.
ELIMINEU JOIN amb INNER JOIN
La consulta Inner Join es pot utilitzar amb la consulta Delete per eliminar files d'una taula i les files coincidents de l'altra taula que compleixin la condició especificada.
Sintaxi
A continuació es mostren la sintaxi que es pot utilitzar per suprimir files de més d'una taula mitjançant Inner Join .
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Aquí, l'objectiu és un nom de taula des d'on volem suprimir files fent coincidir la condició especificada. Suposem que voleu suprimir files de la taula T1 i T2 on student_id = 2 , llavors es pot escriure com la següent afirmació:
log4j
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
A la sintaxi anterior, la taula de destinació (T1 i T2) s'escriu entre les paraules clau DELETE i FROM. Si ometem qualsevol nom de taula d'allà, aleshores suprimir declaració només elimina files d'una única taula. L'expressió escrita amb ON paraula clau és la condició que coincideix amb les files de les taules on es suprimirà.
Exemple
Suposem que tenim dues taules estudiants i contactes que conté les dades següents:
Taula: alumnes
Taula: contactes
Executeu la consulta següent per entendre Suprimeix Unir-se amb Inner Join. Aquesta declaració elimina una fila que té el mateix identificador a les dues taules.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Després de l'execució correcta, donarà el missatge següent:
ordenació d'inserció
Ara, executeu la consulta següent per verificar que les files s'han suprimit correctament.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Podeu veure que les files on el student_id=4 s'elimina.
ELIMINA LA JOIN amb LEFT JOIN
Ja hem après la clàusula LEFT JOIN amb la instrucció SELECT que retorna totes les files de la taula esquerra (primera) i les files coincidents o no d'una altra taula. De la mateixa manera, també podem utilitzar la clàusula LEFT JOIN amb la paraula clau DELETE per suprimir files de la taula esquerra (primera) que no tinguin files coincidents d'una taula dreta (segona).
La consulta següent explica més clarament on la instrucció DELETE utilitza LEFT JOIN per suprimir files de Taula 1 que no té files coincidents al Taula 2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
A la consulta anterior, tingueu en compte que només utilitzarem la Taula1 amb la paraula clau DELETE, no les dues com es va fer a la instrucció INNER JOIN.
Exemple
Creem una taula' contactes 'i' clients ' en una base de dades que conté les dades següents:
Taula: contactes
exemple d'arbre de cerca binari
Taula: clients
Executeu la següent instrucció que elimina el client que no té a mòbil número:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Després de l'execució correcta, donarà el missatge següent:
Ara, executeu la consulta següent per verificar que les files s'han suprimit correctament.
mysql> SELECT * FROM customers;
Podeu veure que s'eliminen les files on el client no té el número de telèfon mòbil.