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!