Ralat: "Versi MySQL ini belum lagi menyokong 'LIMIT & IN/ALL/ANY/some subquery'"
Bila melaksanakan pertanyaan PHP yang menggunakan subkueri dengan klausa LIMIT dan pengendali IN, anda mungkin menghadapi ralat seperti ini:
Error during SQL execution: SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%funny%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1 MySQL Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Errno: 1235
Ralat ini berlaku kerana versi MySQL tertentu tidak menyokong subqueries dengan klausa LIMIT yang digunakan bersama-sama dengan IN, ALL, ANY, atau SOME operator.
Penyelesaian
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan JOIN dan bukannya subquery:
SELECT v.VID, v.thumb FROM video AS v INNER JOIN (SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) as v2 ON v.VID = v2.VID ORDER BY RAND() LIMIT 1
Pertanyaan yang diubah suai ini menggunakan INNER JOIN untuk menggabungkan hasil dua pernyataan SELECT. Pernyataan SELECT pertama mengambil VID video yang tajuknya mengandungi nama saluran yang ditentukan, menyusunnya mengikut masa tontonan dalam tertib menurun dan mengehadkan keputusan kepada 5 yang pertama. Pernyataan SELECT kedua kemudian menggunakan senarai VID ini untuk menapis set hasil utama, mengambil lajur tertentu daripada jadual video.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1235: 'HAD & DALAM/SEMUA/SEBARANG/BEBERAPA subquery' Tidak Disokong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!