如何在SQL Server 2005中执行服务器端分页

时间:2012-05-12 11:18:30

标签: c# sql sql-server sql-server-2005

我需要能够使用SQL从表中选择特定范围的行。

我应该使用什么TSQL命令来执行服务器端分页?

我不接受服务器端分页? 我想从表中选择前10行并进行一些计算

cmd.commandText :="select top 10 from table "
ada.fill(dt)
for each(datarow dtr in dt.rows)
{
//calulation
}

然后我想选择接下来的10行和相同的重复,直到表的结尾

3 个答案:

答案 0 :(得分:3)

Microsoft在SQL Server 2005中引入了ROW_NUMBER()来帮助分页...

SELECT * FROM (     
  SELECT          
  ROW_NUMBER() OVER (ORDER BY City) AS row, *  
  FROM Cities  
) AS a WHERE row BETWEEN 1 AND 10

使用1和10的变量动态获取下一组。

create proc dbo.whatever_select_paging
  @int page
as

SELECT * FROM (     
  SELECT          
  ROW_NUMBER() OVER (ORDER BY City) AS row, *  
  FROM Cities  
) AS a WHERE row BETWEEN ((@page-1) * 10) +1 AND (@page * 10)-1

go

答案 1 :(得分:0)

您应该使用ROW_NUMBER来完成此任务。查看link有关分页的ROW_NUMBER用法。

答案 2 :(得分:-1)

SELECT TOP 20 FROM MyData
WHERE orderNum <= 61
ORDER BY orderNum DESC

这将从第61行到第80行获得20行(如果您有重复的orderNum值,则可以获得超过20行)