首页  >  问答  >  正文

MySQL - 此版本的 MySQL 目前不支持“LIMIT & IN/ALL/ANY/SOME 子查询”

这是我正在使用的 php 代码

$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
');

这就是给我的错误

Message:   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<br />
 MySQL Error:   This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'<br />
MySQL Errno:    1235


P粉316423089P粉316423089390 天前564

全部回复(2)我来回复

  • P粉702946921

    P粉7029469212023-10-17 18:53:50

    您可以使用以下方法来绕过此错误。

    $Last_Video = $db->fetch_all('
        SELECT VID, thumb
        FROM video
        WHERE VID IN (select * from (
            SELECT VID
            FROM video
            WHERE title LIKE "%'.$Channel['name'].'%"
            ORDER BY viewtime DESC
            LIMIT 5) temp_tab)
        ORDER BY RAND()
        LIMIT 1
    ');

    回复
    0
  • P粉283559033

    P粉2835590332023-10-17 10:50:25

    您可以使用 JOIN 来代替 IN

    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

    回复
    0
  • 取消回复