我有 100 条记录,我可以使用查询中的“TOP 10”选择前 10 条记录。同样有什么办法可以得到第20到30条记录吗?
最佳答案
由于您使用的是 SQL Server 2005,因此您可以使用"new"ROW_NUMBER() 函数。这将为您提供第 11 行到第 20 行:
SELECT Description, Date
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Date DESC)
AS Row, Description, Date FROM LOG)
AS LogWithRowNumbers
WHERE Row >= 11 AND Row <= 20
如果您有很多记录,在内部 SELECT 子句中使用 TOP X 可能会加快速度,因为如果您只想获取记录 11 到 20,则返回 1000 条记录是没有用的:
SELECT Description, Date
FROM (SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY Date DESC)
AS Row, Description, Date FROM LOG)
AS LogWithRowNumbers
WHERE Row >= 11 AND Row <= 20
关于sql - 类似于 TOP 10 的查询来选择中间记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792362/