Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memadam Rekod Berdasarkan Kriteria Khusus dalam MySQL menggunakan Subqueries?

Bagaimana untuk Memadam Rekod Berdasarkan Kriteria Khusus dalam MySQL menggunakan Subqueries?

DDD
DDDasal
2024-11-09 22:08:02538semak imbas

How to Delete Records Based on a Specific Criteria in MySQL using Subqueries?

Menggunakan Subqueries untuk Manipulasi Data dalam MySQL

Tugas di tangan melibatkan pemadaman rekod secara terpilih daripada jadual berdasarkan kriteria tertentu. Dengan memanfaatkan subkueri, kami boleh mencapainya menggunakan MySQL.

Untuk bermula, mari kita pertimbangkan pertanyaan berikut:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)

Pertanyaan ini bertujuan untuk memadamkan catatan yang bukan antara 15 rekod terkini, seperti yang dipesan oleh medan "cap masa". Walau bagaimanapun, versi MySQL sebelum 8.0 menghadapi ralat apabila cuba menggabungkan klausa LIMIT dengan subkueri IN.

Untuk mengatasi had ini, kami boleh menggunakan penyelesaian subkueri bersarang. Pertanyaan yang disemak menjadi:

DELETE 
FROM posts 
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp DESC LIMIT 0, 15
      ) 
      AS t);

Dalam pertanyaan yang ditulis semula ini, kami membuat subkueri dalaman untuk mengambil ID 15 siaran terkini. Subquery luar kemudiannya mengalikan hasil menggunakan klausa "AS t".

Dengan menggunakan pendekatan subquery bersarang ini, kami boleh mencapai hasil yang diinginkan dengan berkesan, walaupun dengan versi MySQL lama yang tidak mempunyai sokongan penuh untuk gabungan LIMIT dan IN .

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Berdasarkan Kriteria Khusus dalam MySQL menggunakan Subqueries?. 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