SQL Server解决分页问题(三种方法)

select * from NewsType;

结果:

1   新闻  NULL
2   国际  NULL
3   军事  NULL
4   生活  NULL
5   国内  NULL
6   国歌  NULL

1.第一种是在学校上课学到的,效率低下:

select top 3 * from NewsType
where ntid not in (select top 3 ntid from NewsType)

结果:

4   生活  NULL
5   国内  NULL
6   国歌  NULL

意思是:若是想要3-6,那么就先剔除前三个(子查询),之后再查询自己要的范围,就是不再子查询中出现的!

2.第二种,效率也是很低下的,sql 代码也是很多

select top 3 * from (select top 6 * from NewsType order by ntid) as temp
order by ntid desc

结果:

6   国歌  NULL
5   国内  NULL
4   生活  NULL

先不说,若是表很大的话,那么效率低下,而且还是倒序,所以,还要接着加一层:

select * from (select top 3 * from (select top 6 * from NewsType order by ntid) as temp
order by ntid desc)as tm order by ntid;

这样的结果:

4   生活  NULL
5   国内  NULL
6   国歌  NULL

3.这里推荐第三种(利用函数):

select * from (select ROW_NUMBER() over(order by ntid)as id,* from NewsType)as temp 
where id between 2 and 5;

结果:

2   2   国际  NULL
3   3   军事  NULL
4   4   生活  NULL
5   5   国内  NULL

希望对您有帮助,俊骏君(^__^) 嘻嘻!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值