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 

我该如何解决这个问题? 它的另一种方式使它…所以我没有得到错误…

而不是使用IN,您可以使用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 

您可以在下面使用绕过此错误。

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

这里你不需要子查询。 尝试这个:

  SELECT VID, thumb FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY RAND() DESC LIMIT 1 

在MySQL 5.0.26及更高版本中,您将收到错误消息:

对于某些子查询操作符,MySQL不支持子查询中的LIMIT:

参考 。

为什么你不能使用简单的:?

 SELECT v.VID, v.thumb FROM video as v WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5 

什么用于子查询?