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.