为啥我不能在我的 SQL Server 上查询 OFFSET/FETCH 查询?

Posted

技术标签:

【中文标题】为啥我不能在我的 SQL Server 上查询 OFFSET/FETCH 查询?【英文标题】:Why can't I query OFFSET/ FETCH query on my SQL Server?为什么我不能在我的 SQL Server 上查询 OFFSET/FETCH 查询? 【发布时间】:2013-11-14 10:18:07 【问题描述】:

我想在我的 SQL Server 上运行此查询,如下所示:

Microsoft SQL Server Management Studio 10.50.1600.1

但它不能识别OFFSET,所以显示ERROR?

SELECT * FROM dbo.tbl_MatchDetail
ORDER BY MatchDetailID
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

【问题讨论】:

您显示的语法显然是在 SQL Server 2012 中引入的,因此,如果您的每个标签都使用 SQL Server 2008,那就是问题所在。请参阅this question 了解替代方案。 okthanx 是否有任何等效的 MSSQL 2008 R2 语法? 查看我链接到的问题的答案。 【参考方案1】:

OFFSET FETCH 是 Sql Server 2012 中添加的新功能,在 Sql Server 2008 中不存在。

【讨论】:

Microsoft SQL Server Management Studio 12.0.1524.0 这是我上面的 MSSQL 信息,MSSQL 2014 CTP2 仍然 OFFSET 关键字无效为什么? OFFSET 10 ROWS 仅获取 NEXT 10 ROWS。 在末尾添加 Only 关键字。 @AmirrezaKeshavarz 它是否适用于 SQL Server 2014 (12.0.2000.8)?我总是收到“'OFFSET'附近的语法错误”错误 @ArianSharifian 在 SSMS 2012 中遇到同样的问题:/【参考方案2】:

请注意,如果您没有订单,即使在 2014 年也会收到错误消息。偏移量必须遵循 order by 语句。

【讨论】:

是的,这就是我的问题。谢谢

以上是关于为啥我不能在我的 SQL Server 上查询 OFFSET/FETCH 查询?的主要内容,如果未能解决你的问题,请参考以下文章

为啥SQL Server 2008 R2在Win7系统上安装后不能运行!求解答。

为啥在我的 Mac 上编译的 C++ 库不能在服务器上运行?

为啥我的存储过程没有出现在我的 SQL Server 数据库中?

为啥我不能将 SQL Server 连接到我的节点 js

SQL Server 在事实表上插入查询

为啥我不能为 SQL Server 2019 创建外部语言?