Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod dari Jadual Kanak-kanak Menggunakan JOIN dalam MySQL?

Bagaimana untuk Memadam Rekod dari Jadual Kanak-kanak Menggunakan JOIN dalam MySQL?

DDD
DDDasal
2025-01-20 17:13:11532semak imbas

How to Delete Records from a Child Table Using a JOIN in MySQL?

Gunakan JOIN untuk memadam rekod subtable dalam MySQL

Dalam pangkalan data hubungan seperti MySQL, pemadaman rekod mungkin melibatkan berbilang jadual dan hubungan kompleks. Satu senario ialah apabila anda perlu memadamkan rekod daripada jadual anak berdasarkan syarat yang melibatkan jadual induk.

Adegan:

Pertimbangkan struktur pangkalan data berikut:

  • jadual pelanggan, client_id sebagai kunci utama
  • jadual projek, project_id sebagai kunci utama, client_id sebagai kunci asing
  • jadual siaran, post_id sebagai kunci utama, project_id sebagai kunci asing

Sasaran:

Andaikan anda ingin memadamkan semua siaran yang dikaitkan dengan klien tertentu dengan memadamkan klien itu sendiri. Walau bagaimanapun, jadual siaran tidak merujuk client_id secara langsung. Ia hanya merujuk project_id.

Percubaan awal (tidak sah):

<code class="language-sql">DELETE 
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Penyelesaian:

Untuk membetulkan masalah dan berjaya memadamkan siaran, anda perlu menentukan nama jadual (siaran) dalam kenyataan DELETE:

<code class="language-sql">DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Pertanyaan yang diubah suai ini secara eksplisit menyasarkan jadual siaran untuk dipadamkan berdasarkan syarat penyertaan.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod dari Jadual Kanak-kanak Menggunakan JOIN dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn