首頁 >資料庫 >mysql教程 >如何使用 IN 運算子解決 MySQL 的子查詢 LIMIT 限制?

如何使用 IN 運算子解決 MySQL 的子查詢 LIMIT 限制?

DDD
DDD原創
2024-12-14 03:13:14201瀏覽

How to Work Around MySQL's Subquery LIMIT Restriction with IN Operator?

MySQL 與子查詢限制不相容

錯誤訊息「此版本的MySQL 尚不支援'LIMIT & IN/ALL/ANY / SOME subquery'" 表示正在使用的MySQL 版本不支援在使用某些運算子時在子查詢中使用LIMIT子句,例如IN.

此限制的一種解決方法是使用 JOIN 而不是 IN 子查詢。以下程式碼示範了這種方法:

$Last_Video = $db->fetch_all('
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
');

在此程式碼中:

  • 表別名「v」用於外部「video」表。
  • 子查詢用於選擇與標題過濾器匹配的影片的VID,並按觀看時間降序排列。該子查詢別名為「v2」。
  • JOIN 子句用於將主「video」表與 VID 欄位上的「v2」子查詢連接。
  • 最終結果有限使用 RAND() 和 LIMIT 隨機選擇一個記錄。

以上是如何使用 IN 運算子解決 MySQL 的子查詢 LIMIT 限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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