Použijte JOIN
v DELETE
prohlášení.
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
Případně můžete použít...
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
...pro smazání pouze z pets_activities
Viz toto .
Pro odstranění jedné tabulky, ale s referenční integritou, existují jiné způsoby, jak to udělat s EXISTS
, NOT EXISTS
, IN
, NOT IN
atd. Ale ten výše, kde určujete, ze kterých tabulek se mají odstranit, s aliasem před FROM
klauzule vás může dostat z několika velmi úzkých míst snadněji. Mám tendenci oslovit EXISTS
v 99% případů a pak je tu 1%, kde tato syntaxe MySQL zabere den.