输入banner图图片脚本导航/分类

mysql中limit和in同时使用出现1235 doesn't yet support 'LIMIT & IN

最近在优化美食网分类关系表与菜谱调用的数据库查询问题,原来使用笨方法:

SELECT `recipeid` FROM recipes_catship WHERE `catid`=1 LIMIT 0,30

先查询出来菜谱的ID,跑 while后,在循环里再根据菜谱ID查询详细信息。这样光菜谱都需要查询30次,不符合我要的风格。

想到使用 id IN(id1,id2,id3)的方式,节约数据库查询。

select * from recipes where id in (SELECT id from recipes_catship limit 0,30);

然后就报错了:

[SQL]select * from recipes where id in (SELECT id from recipes_catship limit 0,30);

[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

这个版本的MYSQL不支持LIMIT与IN等东东同时使用云云。。。

然后搜索了一下,可以使用以下语句替换一下就可以完美支持LINMIT了:

select * from recipes where id in (SELECT ii.id from (SELECT id from recipes_catship limit 0,30) as ii);

这里只需要多嵌套一层SELECT,在最里面的嵌套里可以写上各类条件与排序。3层SELECT查询嵌套,并不会太影响速度,至少我测试出来速度是相当满意的!