MySQL - 这个版本的MySQL还不支持'LIMIT&IN / ALL / ANY

MySQL - 这个版本的MySQL还不支持'LIMIT&IN / ALL / ANY / SOME子查询

这是我正在使用的代码

    $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

我怎么能解决这个问题?它的其他方式...所以我没有得到错误...


慕运维8079593
浏览 1158回答 3
3回答

慕慕森

您可以使用JOIN而不是INSELECT&nbsp;v.VID,&nbsp;v.thumb FROM&nbsp;video&nbsp;AS&nbsp;v INNER&nbsp;JOIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;VID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;video &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;title&nbsp;LIKE&nbsp;"%'.$Channel['name'].'%" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;viewtime&nbsp;DESC &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIMIT&nbsp;5)&nbsp;as&nbsp;v2 &nbsp;&nbsp;ON&nbsp;v.VID&nbsp;=&nbsp;v2.VID ORDER&nbsp;BY&nbsp;RAND()LIMIT&nbsp;1

哆啦的时光机

您可以使用以下方法绕过此错误。$Last_Video&nbsp;=&nbsp;$db->fetch_all(' &nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;VID,&nbsp;thumb &nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;video &nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;VID&nbsp;IN&nbsp;(select&nbsp;*&nbsp;from&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;VID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;video &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;title&nbsp;LIKE&nbsp;"%'.$Channel['name'].'%" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;viewtime&nbsp;DESC &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIMIT&nbsp;5)&nbsp;temp_tab) &nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;RAND() &nbsp;&nbsp;&nbsp;&nbsp;LIMIT&nbsp;1 ');

回首忆惘然

这里不需要子查询。试试这个:&nbsp;SELECT&nbsp;VID,&nbsp;thumb &nbsp;FROM&nbsp;video &nbsp;WHERE&nbsp;title&nbsp;LIKE&nbsp;"%'.$Channel['name'].'%" &nbsp;ORDER&nbsp;BY&nbsp;RAND()&nbsp;DESC &nbsp;LIMIT&nbsp;1在MySQL 5.0.26及更高版本中,您将收到错误:对于某些子查询运算符,MySQL不支持子查询中的LIMIT:参考。
打开App,查看更多内容
随时随地看视频慕课网APP