Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Gagal Apabila Menggunakan LIMIT dalam NOT IN Subqueries?
LIMIT dalam NOT IN Subqueries: MySQL Limitations
Apabila bekerja dengan MySQL, anda mungkin menghadapi had apabila menggunakan subqueries dalam klausa LIMIT. Satu isu biasa timbul apabila cuba memadamkan rekod yang tidak disertakan dalam julat tertentu.
Andaikan anda mahu memadamkan siaran yang bukan antara yang terkini 15. Pendekatan naif mungkin melibatkan pertanyaan berikut:
DELETE FROM posts WHERE id NOT IN (SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15);
Walau bagaimanapun, pertanyaan ini berkemungkinan akan gagal, mengembalikan mesej ralat seperti "MySQL belum menyokong LIMIT & IN/ALL/ANY/SOME subquery."
Menyelesaikan Had
Untuk mengatasi had ini, anda boleh menggunakan penyelesaian dengan melampirkan subkueri dalam subkueri lain:
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 diubah suai ini, subkueri yang memilih 15 siaran terkini diberikan alias, "t," dan kemudian subkueri luar menggunakan alias untuk mendapatkan ID yang dikecualikan. Hasilnya ialah pertanyaan yang sah yang sepatutnya mencapai pemadaman yang diingini.
Atas ialah kandungan terperinci Mengapa MySQL Gagal Apabila Menggunakan LIMIT dalam NOT IN Subqueries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!