sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo eliminar de varias tablas en MySQL?

Use un JOIN en el DELETE declaración.

DELETE p, pa
      FROM pets p
      JOIN pets_activities pa ON pa.id = p.pet_id
     WHERE p.order > :order
       AND p.pet_id = :pet_id

Alternativamente, puede usar...

DELETE pa
      FROM pets_activities pa
      JOIN pets p ON pa.id = p.pet_id
 WHERE p.order > :order
   AND p.pet_id = :pet_id

...para eliminar solo de pets_activities

Ver esto .

Para eliminaciones de una sola tabla, pero con integridad referencial, hay otras formas de hacerlo con EXISTS , NOT EXISTS , IN , NOT IN y etc. Pero el de arriba donde especifica de qué tablas eliminar con un alias antes del FROM cláusula puede sacarte de algunos aprietos bastante más fácilmente. Tiendo a comunicarme con un EXISTS en el 99% de los casos y luego está el 1% donde esta sintaxis de MySQL se lleva el día.