我正在尝试构建一个查询,它将执行此操作: 让我们说例如我在表中有100条记录。我有调用查询的.net表单。我有一个查询字符串参数pageindex,类似于http://mysite.com?id=2。 我现在要做的是如果id = NULL,那么从该表获取第1组记录,其中id为1到20,表示从1到20,如果id = 2,则从第20行获取第2组recordw到40,如果id = 3,则从该表中获得第3组记录,即40到60之间的记录 我想知道这是否可行。 非常感谢Laziale
答案 0 :(得分:0)
SELECT col1, col2
FROM (
SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum
FROM MyTable
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow
取自Row Offset in SQL Server,首先通过“mssql limit offset”搜索队列获得谷歌。
答案 1 :(得分:0)
如果按照你的说法制作,并且ID在1到100之间,你可以
@Page是页码(基于0)
SELECT TOP 20 * FROM MyTable WHERE (ID > @Page*20) ORDER BY ID
如果您希望使用Ms SQL的分页样式并且ID不在行,则可以执行
WITH NewTable AS (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM MyTable)
SELECT TOP 20 * FROM NewTable WHERE (RowNumber > @Page*20)