繁体   English   中英

SQL Server OFFSET 等价物

[英]SQL Server OFFSET equivalent

我在 Windows Server 2008 上使用 SQL Server 2008 Enterprise。我想选择前 11 到前 20 的结果(例如,我只对第 11 到第 20 个结果感兴趣)。 任何想法如何有效地在 tsql 中编写此查询?

提前致谢, 乔治

不幸的是,SQL Server 不提供任何类似于 MySQL 的OFFSET语法。 但是,您可能想尝试使用派生表,如下所示:

SELECT some_field
FROM   (
          SELECT some_field, ROW_NUMBER() OVER (ORDER BY some_id) AS rownum
          FROM   table
       ) AS t
WHERE  t.rownum BETWEEN 11 AND 20

请参阅以下解决方案仅适用于 SQL Server 2012 及更高版本。

sql server 中的偏移量限制:

SELECT email FROM myTable
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

//偏移量 - 没有。 跳过的行

//下一个 - 需要没有。 下一行

假设排序字段PK,

select top 10 * from MyTable
where PK not in (select top 10 PK from Mytable order by PK)
order by PK

编辑:这是一个变体

select top 10 * from 
(select top 20 * from MyTable order by PK) as MySelection
order by PK desc

我在 Windows Server 2008 上使用 SQL Server 2008 Enterprise。我想从前 11 名到前 20 名中选择结果(例如,我只对第 11 名到第 20 名结果感兴趣)。 任何想法如何有效地在 tsql 中编写此查询?

提前致谢,乔治

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM