sql - 类似于 TOP 10 的查询来选择中间记录?

标签 sql sql-server sql-server-2005

我有 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

Source

关于sql - 类似于 TOP 10 的查询来选择中间记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792362/

相关文章:

mysql - 使用 SQL (mysql) 的复杂 select 语句

c# - 列 '[Group]' 不属于表表

c# - 进行大量查询时,asp.net 网站停止响应

sql-server-2005 - sql 2005中的自动增量关键字

sql - 什么是时间戳/行版本(SQL Server)与 PostgreSQL 的等价物

mysql - SQL:更新除每组之一之外的所有行

sql-server - ISNULL 通配符 '%' 搜索未返回任何记录

sql - 有趣的 SQL 问题

c# - 惊人的错误 "The given key was not present in the dictionary."

asp.net - 使用 T-SQL 创建 SimpleMember 用户帐户 - 密码如何散列?