一道SQL查询的题目

一是查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:

select  top 10 * from A where ID >(select max(ID) from (select  top 30 ID from A order by A ) T) order by A

以上转自:http://www.cnblogs.com/foson/services/trackbacks/435163.aspx

我的语句是:

SELECT a.ID,a.Name

FROM(SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) rowNum,ID,Name FROM A) a

WHERE a.rowNum BETWEEN 31 AND 40

或者用top n语句。

这个查询实现的是 Limit n查询,即 从N到M行记录

材料:

ROW_NUMBER() 指定的数字是连续的、唯一的,不管a.ID中是否有重复,这样显示 1,2,(3),4,5,(6),7

RANK()指定的数字是可以既不连续的、也不唯一的,a.id中有重复,这样显示            1,1,(3),4,4,(6),7

DENSE_RANK()连续,不一定唯一,a.id中有重复,这样显示                              1,1,(2),3,3,(4),5

转载于:https://www.cnblogs.com/dhuxin/archive/2010/10/13/1849827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值