SQL查询选择

时间:2012-03-28 23:02:54

标签: asp.net sql stored-procedures sql-server-2008-r2

我正在尝试构建一个查询,它将执行此操作: 让我们说例如我在表中有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

2 个答案:

答案 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)

参考: http://msdn.microsoft.com/en-us/library/ms186734.aspx

http://msdn.microsoft.com/en-us/library/ms175972.aspx