Използвайте 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 синтаксис отнема деня.