MySQL 巢狀查詢錯誤:不支援「LIMIT & IN/ALL/ANY/SOME 子查詢」
嘗試使用時會發生此錯誤MySQL 中IN 子句中帶有LIMIT 子句的子查詢。要解決此問題,另一種方法是使用JOIN:
原始程式碼:
$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 ');
重構程式碼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
說明:
JOIN 操作基於公共VID 欄位連結兩個表(video 和 v2)。這消除了對 IN 子句中帶有 LIMIT 子句的巢狀查詢的需要,目前 MySQL 版本不支援這種巢狀查詢。
JOIN 的好處:
以上是如何使用 JOIN 修復 MySQL 的'LIMIT & IN/ALL/ANY/SOME subquery”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!