Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Gagal Apabila Menggunakan LIMIT dalam NOT IN Subqueries?

Mengapa MySQL Gagal Apabila Menggunakan LIMIT dalam NOT IN Subqueries?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 00:54:03874semak imbas

Why Does MySQL Fail When Using LIMIT in 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!

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