Utilizza un JOIN
nel DELETE
dichiarazione.
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
In alternativa puoi usare...
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
...per eliminare solo da pets_activities
Vedi questo .
Per le eliminazioni di singole tabelle, ma con integrità referenziale, ci sono altri modi per farlo con EXISTS
, NOT EXISTS
, IN
, NOT IN
ed ecc. Ma quello sopra in cui specifichi da quali tabelle eliminare con un alias prima di FROM
La clausola può tirarti fuori da alcuni punti piuttosto stretti più facilmente. Tendo a contattare un EXISTS
nel 99% dei casi e poi c'è l'1% in cui questa sintassi MySQL prende il sopravvento.