SQL Server中是否有任何方法可以从给定的偏移量开始获取结果?例如,在另一种类型的SQL数据库中,可以执行以下操作:

SELECT * FROM MyTable OFFSET 50 LIMIT 25

结果是51-75.SQL Server中似乎不存在此构造.

我如何在不加载所有我不关心的行的情况下实现这一点?谢谢

推荐答案

我会避免使用SELECT *.指定实际需要的列,即使可能是所有列.

SQL Server 2005+

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

SQL Server 2000

Efficiently Paging Through Large Result Sets in SQL Server 2000

A More Efficient Method for Paging Through Large Result Sets

Sql相关问答推荐

PostgreSQL集群不间断的数据系列

Postgres trunc_date删除一个月

有没有办法在每次计算每一行的数据时更新2个值?

在多个柱上连接时,如何确定连接条件?

不同表达方式时的大小写

HAVING子句内部过滤的正确方法

以一致的价值获得独特的价值

如何使用jsonn_populate_record()插入到包含IDENTITY列的表中

GRAFANA 数据库查询错误:pq:列名称不存在

在特定条件下使用 LAG,确定要采用什么 LAG 值?

在 Oracle 21c 中透视文本值

两个具有 NULL 值的表达式结果之间的差异

如何从postgresql中的项目映射(关联数组)设置值?

每次计数器增加时通过运行总重置进行分组

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

如何在TSQL中编写此窗口查询

为什么在事务中未被后续使用的CTE执行SELECT...FOR UPDATE无效?

如何在插入时将字符串'03-January-2023'转换为日期时间

添加一列并根据其他列值进行填充

SQL Select 最大并获取列名