Gebruik een JOIN
in de DELETE
verklaring.
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
Als alternatief kunt u gebruik maken van...
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
...om alleen te verwijderen van pets_activities
Zie dit .
Voor het verwijderen van één tabel, maar met referentiële integriteit, zijn er andere manieren om te doen met EXISTS
, NOT EXISTS
, IN
, NOT IN
en etc. Maar degene hierboven waar je specificeert uit welke tabellen je wilt verwijderen met een alias voor de FROM
clausule kan je gemakkelijker uit een paar behoorlijk krappe plekken halen. Ik heb de neiging om contact op te nemen met een EXISTS
in 99% van de gevallen en dan is er nog de 1% waar deze MySQL-syntaxis de dag duurt.