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

mysql在子查询in中用了limit,然后报错:

[SQL] 
select distinct(p.id) poetryId,content poetryDesc,author poetryAnthor,l.backImg labelImg,p.fullContent flag,archaics,moods,scenes,hots,works,2 collectionType,l.archaicsImg,p.worksName from dd_poetry p join dd_label l on l.id = p.archaics  where 1=1 
and p.id in(
	 select id from dd_poetry order by rand()  limit 100 
)


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

in (select id from table limit 100)的时候报错~~~~


解决办法:

在limit的外层在套一层:in (select id from (select id from table limit 100) as t)的时候报错~~~~

select distinct(p.id) poetryId,content poetryDesc,author poetryAnthor,l.backImg labelImg,p.fullContent flag,archaics,moods,scenes,hots,works,2 collectionType,l.archaicsImg,p.worksName from dd_poetry p join dd_label l on l.id = p.archaics  where 1=1 
and p.id in(
	select t.id from (select id from dd_poetry order by rand()  limit 100) as t
)

这里用了order by rand()耗性能的关键字,但是如果使用主键id来随机的话,就不会影响性能~


先随机100条再来查询

你可能感兴趣的:(in,limit)