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
希望对您有帮助,俊骏君(^__^) 嘻嘻!