总体来说,对于页数(pagenum)和每页容量(pagesize)
int pagenum, int pagesize
转化为查询 start 行 到 end 行的问题,页数从1开始
int start=(pagenum-1)*pagesize+1;
int end=pagenum*pagesize;
1、SqlServer: 双Top嵌套
目标:从news 表中取 start 到 end 行的新闻,按时间递减。
第一行新闻记为1。
v1=end-start+1; v2=start-1;
select top v1 * from news
where news_id not in
( select top v2 news_id from news order by sub_time desc)
order by sub_time desc
2、SqlServer05、08: ROW_NUMBER()函数
ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY news_id).
例如:
select ROW_NUMBER() over(order by news_id) as row , * from news
结果:
目标:从news 表中取 start 到 end 行的新闻,按时间递减。
select * from
(
select ROW_NUMBER() over(order by sub_time desc) as row,* from news
) as temp
where row between start and end