Asp.net源码交流论坛 Asp.net交流讨论区Asp.net技术文章SQL取出第 m 条到第 n 条记录的方法

1  /  1  页    1  跳转
发表新主题 回复该主题

标题: SQL取出第 m 条到第 n 条记录的方法

身份:部门主管

 
  • UID:26
  • 来自:
  • 精华:2
  • 积分:120
  • 帖子:104
  • 注册: 2007-05-26
  • 状态: 离线
  • 威望:6.00
  • 金钱:19.80 元

SQL取出第 m 条到第 n 条记录的方法

分页或者分段调用数据的时候很有用的啊

--从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)

SELECT TOP n-m+1 *
  FROM Table
  WHERE (id NOT IN (SELECT TOP m-1 id FROM Table )) 


--从TABLE表中取出第m到n条记录 (Exists版本)

SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists
(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )
Order by id


--m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名

Select Top n-m+1 * From Table
Where Id>(Select Max(Id) From
(Select Top m-1 Id From Table Order By Id Asc) Temp)
Order By Id Asc
 
广告位招租,我换新头像了阿
引用 回复
 

身份:部门主管

 
  • UID:13793
  • 来自:石家庄
  • 精华:0
  • 积分:375
  • 帖子:365
  • 注册: 2008-04-16
  • 状态: 离线
  • 威望:10.00
  • 金钱:40.10 元

回复:SQL取出第 m 条到第 n 条记录的方法

学习了,呵呵。对于sqlserver很有用
引用 回复
 

身份:学员

 
  • UID:5198
  • 来自:
  • 精华:0
  • 积分:11
  • 帖子:11
  • 注册: 2008-01-13
  • 状态: 离线
  • 威望:0.00
  • 金钱:1.10 元

回复:SQL取出第 m 条到第 n 条记录的方法

it is very practicality for me,3Q
引用 回复
 

身份:工程师

 
  • UID:1267
  • 来自:西安
  • 精华:0
  • 积分:275
  • 帖子:277
  • 注册: 2007-11-30
  • 状态: 离线
  • 威望:0.00
  • 金钱:29.30 元

回复:SQL取出第 m 条到第 n 条记录的方法

学习下;
谢谢,大虾
引用 回复
 

身份:学员

 
  • UID:21790
  • 来自:
  • 精华:0
  • 积分:7
  • 帖子:7
  • 注册: 2008-06-11
  • 状态: 离线
  • 威望:0.00
  • 金钱:0.70 元

回复:SQL取出第 m 条到第 n 条记录的方法

Select Top n-m+1 * From Table Where Id>(Select Top m-1 Id From Table Order By Id Asc) Order By Id Asc
引用 回复
 

身份:董事长

 
  • UID:2
  • 来自:北京
  • 精华:27
  • 积分:1696
  • 帖子:1507
  • 注册: 2007-05-17
  • 状态: 离线
  • 威望:54.00
  • 金钱:268.95 元
 
源码发布专家

回复:SQL取出第 m 条到第 n 条记录的方法

,值得收藏,非常实用!
 
技术问题请直接发布到论坛,合作及咨询请加技术支持QQ:793095132
问题搜索请点击
引用 回复
 

身份:学员

 
  • UID:33384
  • 来自:
  • 精华:0
  • 积分:1
  • 帖子:1
  • 注册: 2008-10-08
  • 状态: 离线
  • 威望:0.00
  • 金钱:0.10 元

回复:SQL取出第 m 条到第 n 条记录的方法

SQL Server 2005 中可以用 ROW_NUMBER() OVER()配合取分页数据了。
DECLARE @StartRow INT
DECLARE @PageSize INT
SET ROWCOUNT 0
SET @StartRow = 100
SET @PageSize = 10

SELECT * FROM
(
  SELECT ROW_NUMBER() OVER (ORDER BY Name) AS RowNumber,* FROM Person
) AS A WHERE A.RowNumber BETWEEN @StartRow + 1 AND @StartRow + @PageSize
引用 回复
 
1  /  1  页    1  跳转
发表新主题 回复该主题

现在时间是:2009-01-08 03:53:50 京ICP备06046876号