
錯誤:「此版本的MySQL 尚未支援'LIMIT & IN/ALL/ANY/SOME 子查詢'」
何時執行使用帶有LIMIT 子句和IN 運算子的子查詢的PHP查詢,您可能會遇到類似的錯誤this:
1 2 3 4 5 | 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 而不是子查詢:
1 2 3 4 5 6 7 8 9 10 11 | 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中文網其他相關文章!