SQL Server:分页机制

时间:2016-07-06 20:13:40

标签: sql sql-server

SELECT TOP 10 * 
FROM 
    (SELECT TOP 100 
         [ID], [SUMMARY], [NAME]   
     FROM 
         [db_test].[dbschema].[dborders]
     ORDER BY 
         [ID]) AS X 
ORDER BY [ID]

我得到了分页机制的查询,如何查询10到20条记录的结果?

因为当我将第一个数字从10改为20时,我得到前20个记录,而不是10到20之间的记录。

请为我编写示例查询。

编辑:它不是SQL Server 2012

2 个答案:

答案 0 :(得分:0)

您需要更改内部和外部查询的顺序

选择10-20

SELECT TOP 10 * FROM (
    SELECT TOP 20 [ID] ,[SUMMARY] ,[NAME]   
FROM [db_test].[dbschema].[dborders]
ORDER BY [ID] desc
)AS X ORDER BY [ID] asc

虽然我在2002年使用这种方法,但现在对于窗口函数的可用性来说是愚蠢的。我认为这是一种更好的方式。

答案 1 :(得分:0)

您可以使用row_number分配页面,如

SELECT * FROM (
    SELECT TOP 100 [ID] ,[SUMMARY] ,[NAME]   ,row_number () over (order by [ID])/10 + 1 as [Page]
FROM [db_test].[dbschema].[dborders])AS X 
where [Page] = 2
ORDER BY [ID]