Mysql实现rownum

经过查找,在网上找到了类似的写法。但是经过测试,发现查询结果与期望的情况不相符,经过一系列的测试,终于发现了问题所在。

以下是经过测试过的sql

select id,class,score,rank from (  
select b.id,b.class,b.score, 
if(@pdept=b.class,@rank:=@rank+1,@rank:=1) as rank,  
@pdept:=b.class  
from (  
select id,class,score from a order by id ,score  
) b ,(select  @pdept := null ,@rank:=0) c ) result  
having rank <6 ;  

  在order by处,第一个排序字段必须是想要进行分类的字段,这样可以保证在查询时,能够把所有的分类字段做成连续的区间,然后再对想要排序的字段进行排序

 

posted @ 2018-03-30 10:34  达拉崩吧  阅读(423)  评论(0编辑  收藏  举报