Ralat Pertanyaan Bersarang MySQL: 'HAD & DALAM/SEMUA/SEBARANG/SEBARANG subquery' Tidak Disokong
Ralat ini berlaku apabila cuba menggunakan subquery dengan klausa LIMIT dalam klausa IN dalam MySQL. Untuk menyelesaikan isu ini, pendekatan alternatif ialah menggunakan JOIN:
Kod Asal:
$Last_Video = $db->fetch_all(' SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1 ');
Kod Refactored dengan JOIN:
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
Penjelasan:
Operasi JOIN memautkan dua jadual (video dan v2) berdasarkan lajur VID biasa. Ini menghapuskan keperluan untuk pertanyaan bersarang dengan klausa LIMIT dalam klausa IN, yang tidak disokong dalam versi MySQL semasa.
Faedah JOIN:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Menggunakan JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!