錯誤:「此版本的MySQL 尚未支援'LIMIT & IN/ALL/ANY/SOME 子查詢'」
何時執行使用帶有LIMIT 子句和IN 運算子的子查詢的PHP查詢,您可能會遇到類似的錯誤this:
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
出現此錯誤是因為某些版本的MySQL 不支援帶有與IN、ALL、ANY 或SOME 運算子結合使用的LIMIT 子句的子查詢。
解決方案
要解決此問題,請考慮使用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
此修改後的查詢使用INNER JOIN 來組合兩個SELECT 語句的結果。第一個 SELECT 語句取得標題包含指定頻道名稱的影片的 VID,依觀看時間降序排列,並將結果限制為前 5 個。然後第二個 SELECT 語句使用此 VID 清單來篩選主結果集,從視訊表中取得特定欄位。
以上是如何解決 MySQL 錯誤 1235:不支援「LIMIT & IN/ALL/ANY/SOME 子查詢」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!