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