Brug en JOIN
i DELETE
erklæring.
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
Alternativt kan du bruge...
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
...for kun at slette fra pets_activities
Se dette .
For sletninger af en enkelt tabel, men med referenceintegritet, er der andre måder at gøre med EXISTS
, NOT EXISTS
, IN
, NOT IN
og osv. Men den ovenfor, hvor du angiver fra hvilke tabeller, der skal slettes med et alias før FROM
klausul kan nemmere få dig ud af et par temmelig trange punkter. Jeg har en tendens til at kontakte en EXISTS
i 99 % af tilfældene, og så er der de 1 %, hvor denne MySQL-syntaks tager dagen.