Użyj JOIN w DELETE oświadczenie.
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
Alternatywnie możesz użyć...
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
...usunąć tylko z pets_activities
Zobacz to .
W przypadku usuwania pojedynczych tabel, ale z integralnością referencyjną, istnieją inne sposoby wykonania z EXISTS , NOT EXISTS , IN , NOT IN itp. Ale ten powyżej, w którym określasz, z których tabel chcesz usunąć, za pomocą aliasu przed FROM klauzula może łatwiej wydostać się z kilku dość ciasnych sytuacji. Mam tendencję do kontaktu z EXISTS w 99% przypadków, a w 1% przypadków ta składnia MySQL zajmuje cały dzień.