Saya mencoba menghapus dari beberapa tabel sekaligus. Saya telah melakukan sedikit penelitian, dan menghasilkan ini
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Namun, saya mendapatkan kesalahan ini
Uncaught Database_Exception [1064]: Anda mengalami kesalahan dalam sintaks SQL; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'p,
pets_activities
pa ...
Saya belum pernah melakukan penghapusan tabel silang sebelumnya, jadi saya tidak berpengalaman dan terjebak untuk saat ini!
Apa yang saya lakukan salah?
SELECT
butuh waktu yang sama lama?Karena ini tampak seperti hubungan orang tua / anak sederhana antara
pets
danpets_activities
, Anda akan lebih baik membuat batasan kunci asing dengan kaskade penghapusan.Dengan begitu, saat sebuah
pets
baris dihapus,pets_activities
baris yang terkait dengannya secara otomatis juga terhapus.Kemudian kueri Anda menjadi sederhana:
sumber
pa
adalah anak yang layakp
karenaid/pet_id
pemetaan.Gunakan ini
atau
sumber
Saya tidak memiliki database mysql untuk diuji saat ini, tetapi apakah Anda sudah mencoba menentukan apa yang harus dihapus sebelum klausa from? Sebagai contoh:
Saya pikir sintaks yang Anda gunakan terbatas pada versi mysql yang lebih baru.
sumber
Bagi saya sintaksnya terlihat benar ... coba ubah untuk digunakan
INNER JOIN
...Coba lihat ini .
sumber
Kepada siapa pun yang membaca ini di tahun 2017, beginilah cara saya melakukan sesuatu yang serupa.
Secara umum, untuk menghapus baris dari beberapa tabel, sintaks yang saya ikuti diberikan di bawah ini. Solusi ini didasarkan pada asumsi bahwa ada hubungan antara kedua tabel.
sumber
Saya menemukan artikel ini yang menunjukkan kepada Anda cara menghapus data dari beberapa tabel dengan menggunakan pernyataan MySQL DELETE JOIN dengan penjelasan yang baik.
sumber