2

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

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

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

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

然后我想选择接下来的 10 行并同样重复直到表格结束

4

3 回答 3

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
于 2012-05-12T11:29:08.630 回答
0

您应该使用 ROW_NUMBER 来完成此操作。在分页上查看 ROW_NUMBER 用法的链接

于 2012-05-12T11:25:36.260 回答
-1
SELECT TOP 20 FROM MyData
WHERE orderNum <= 61
ORDER BY orderNum DESC

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

于 2012-05-12T14:52:11.780 回答