--@temporderid id排序
--@tablename 表名
--@currentpage 当前页
--@pagesize 每页记录
set @sqlsub='SELECT ROW_NUMBER() OVER('+@temporderid+') as rowNUM,* FROM '+@tablename
set @sql= 'SELECT * FROM ('+@sqlsub+')as b where rowNUM BETWEEN' +str((@currentpage-1)*@pagesize+1)+' AND '+str(@currentpage*@pagesize)+' '+@temporderid
exec(@sql)原来用not in来分页,都说效率很低。。于是我就学习用row number() over,在网上找到了上面的语句,也调试出来了,就是不知道上面两句sql的具体意思是什么?麻烦大家详细的给我解说看看,谢谢了
OVER() 括号里面的字段 如果用order by 就是排序字段 如果用partition by就是分组字段
实际上就是按照字段给行号排序 或者按照字段给行号分组然后刚才的行号 介于pagesize*pageindex-1 到 pagesize*pageindex之间 的那些记录 就是 你所需要的