Gunakan JOIN
di DELETE
pernyataan.
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
Atau Anda dapat menggunakan...
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
...untuk menghapus hanya dari pets_activities
Lihat ini .
Untuk penghapusan tabel tunggal, namun dengan integritas referensial, ada cara lain untuk melakukannya dengan EXISTS
, NOT EXISTS
, IN
, NOT IN
dan lain-lain. Tetapi yang di atas tempat Anda menentukan dari tabel mana yang akan dihapus dengan alias sebelum FROM
klausa dapat membuat Anda keluar dari beberapa tempat yang cukup ketat dengan lebih mudah. Saya cenderung menjangkau EXISTS
dalam 99% kasus dan kemudian ada 1% di mana sintaks MySQL ini membutuhkan waktu.