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ń.