Verwenden Sie einen JOIN
im DELETE
Erklärung.
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
Alternativ können Sie auch ...
verwendenDELETE pa
FROM pets_activities pa
JOIN pets p ON pa.id = p.pet_id
WHERE p.order > :order
AND p.pet_id = :pet_id
...nur aus pets_activities
zu löschen
Siehe dies .
Für das Löschen einzelner Tabellen, jedoch mit referenzieller Integrität, gibt es andere Möglichkeiten, dies mit EXISTS
zu tun , NOT EXISTS
, IN
, NOT IN
und etc. Aber die obige, wo Sie mit einem Alias vor dem FROM
angeben, aus welchen Tabellen gelöscht werden soll Klausel kann Sie leichter aus ein paar ziemlich engen Stellen herausholen. Ich neige dazu, mich an einen EXISTS
zu wenden in 99 % der Fälle und dann gibt es noch die 1 %, in denen diese MySQL-Syntax den Tag überdauert.