我需要能够使用 SQL 从表中选择一定范围的行。
我应该使用什么 TSQL 命令来执行服务器端分页?
我不考虑服务器端分页?我想从表中选择前 10 行并进行一些计算
cmd.commandText :="select top 10 from table "
ada.fill(dt)
for each(datarow dtr in dt.rows)
{
//calulation
}
然后我想选择接下来的 10 行并同样重复直到表格结束
我需要能够使用 SQL 从表中选择一定范围的行。
我应该使用什么 TSQL 命令来执行服务器端分页?
我不考虑服务器端分页?我想从表中选择前 10 行并进行一些计算
cmd.commandText :="select top 10 from table "
ada.fill(dt)
for each(datarow dtr in dt.rows)
{
//calulation
}
然后我想选择接下来的 10 行并同样重复直到表格结束
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
您应该使用 ROW_NUMBER 来完成此操作。在分页上查看 ROW_NUMBER 用法的链接。
SELECT TOP 20 FROM MyData
WHERE orderNum <= 61
ORDER BY orderNum DESC
这将获得从第 61 行到第 80 行的 20 行(如果您有重复的 orderNum 值,则可以获得超过 20 行)