对查询数据库中第M到N条记录的思考3

 在<<对查询数据库中第M到N条记录的思考2 >>节中我向大家介绍了怎样从一张没递增连续字段的表中查询第M到第N条记录,用到方法都是很普通且易理解的方法.下面我再向大家介绍一种只有Sql server 2005中才能使用的方法:

注:有些代码是基于我的第二讲的,如果不明白可以去第二讲看看.

declare @t table --在内存中建立一个临时变量表,运行结束后自动释放
(  
    p 
int identity(1,1),
    s 
varchar(20)  --一定要与ct表的那个 [ss] 字段数据类型一致
)


insert into @t select * from ct --将ct 表中的内容查询到@t表中,而且还创建了一个递增字段 
--
select * from @t 

--以下是前一讲中用到的查询第M到第N条记录

/*
 select * from
(
 select top 4 * from 
  (select top 15 * from @t order by p ) t
  order by p desc 
)   t order by p
*/

--下面这种方法是我向大家介绍的用sql server 2005 的方法
begin

WITH UserList AS 

  
SELECT ROW_NUMBER() OVER (ORDER BY p DESC)AS t, * FROM @t
)

SELECT *
FROM UserList 
WHERE t between 12 and 15

end

--呵呵,效果是不是一样的呢,致于性能的优劣我也没去探究过..不过有时间我也会问问深长的.

好了,关于从表中查询第M到第N条记录我就写这么多了..肯定还有好多方法能达到同样的效果,说不定效率还更高,

我希望对这个专题有新看法的朋友与我联系共同讨论,共同学习,共同进步!!!

QQ 284112449

原文地址:https://www.cnblogs.com/wantingqiang/p/1301055.html