在<<对查询数据库中第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
--呵呵,效果是不是一样的呢,致于性能的优劣我也没去探究过..不过有时间我也会问问深长的.
(
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