Използвайте JOIN в DELETE изявление.
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
Като алтернатива можете да използвате...
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
...за изтриване само от pets_activities
Вижте това .
За изтривания на единична таблица, но с референтна цялост, има други начини за правене с EXISTS , NOT EXISTS , IN , NOT IN и т.н. Но този по-горе, където посочвате от кои таблици да изтриете с псевдоним преди FROM клаузата може да ви изведе от няколко доста тесни места по-лесно. Склонен съм да се обръщам към EXISTS в 99% от случаите и след това има 1%, където този MySQL синтаксис отнема деня.