错误:“此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'”
何时执行使用带有 LIMIT 子句和 IN 运算符的子查询的 PHP 查询,您可能会遇到类似的错误this:
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 MySQL Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Errno: 1235
出现此错误是因为某些版本的 MySQL 不支持带有与 IN、ALL、ANY 或 SOME 运算符结合使用的 LIMIT 子句的子查询。
解决方案
要解决此问题,请考虑使用 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
此修改后的查询使用 INNER JOIN 来组合两个 SELECT 语句的结果。第一个 SELECT 语句获取标题包含指定频道名称的视频的 VID,按观看时间降序排列,并将结果限制为前 5 个。然后第二个 SELECT 语句使用此 VID 列表来过滤主结果集,从视频表中获取特定列。
以上是如何解决 MySQL 错误 1235:不支持'LIMIT & IN/ALL/ANY/SOME 子查询”?的详细内容。更多信息请关注PHP中文网其他相关文章!