首頁 >資料庫 >mysql教程 >如何使用 JOIN 修復 MySQL 的'LIMIT & IN/ALL/ANY/SOME subquery”錯誤?

如何使用 JOIN 修復 MySQL 的'LIMIT & IN/ALL/ANY/SOME subquery”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-13 10:08:18812瀏覽

How to Fix MySQL's

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn