首页 >数据库 >mysql教程 >如何解决 MySQL 错误 1235:不支持'LIMIT & IN/ALL/ANY/SOME 子查询”?

如何解决 MySQL 错误 1235:不支持'LIMIT & IN/ALL/ANY/SOME 子查询”?

Susan Sarandon
Susan Sarandon原创
2024-12-13 22:33:10865浏览

How to Resolve MySQL Error 1235:

错误:“此版本的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn