首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >near OFFSET命令语法不正确

near OFFSET命令语法不正确
EN

Stack Overflow用户
提问于 2017-02-16 10:55:24
回答 3查看 18.3K关注 0票数 9

为什么这不起作用,并给我一个“不正确的语法接近偏移量命令”错误

代码语言:javascript
复制
SELECT o.orderdate, o.orderid, o.empid, o.custid FROM Sales.Orders o
ORDER BY o.orderdate, o.orderid
OFFSET 50 ROWS
FETCH NEXT 25 ROWS ONLY;

我正在使用SQL Server Express 2014

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-16 11:30:04

检查数据库兼容级别。OFFSET是在SQL Server2012中添加的,因此如果您的数据库处于2008兼容模式,则此关键字不可用。

View or Change the Compatibility Level of a Database

在T-SQL中,您可以这样检查它:

代码语言:javascript
复制
 USE AdventureWorks2012;  
 GO  

 SELECT compatibility_level  
 FROM sys.databases WHERE name = 'AdventureWorks2012';  
 GO

下面是取自How to check SQL Server Database compatibility after sp_dbcmptlevel is deprecated?的兼容级别列表

代码语言:javascript
复制
 65 - SQL Server 6.5
 70 - SQL Server 7.0
 80 - SQL Server 2000
 90 - SQL Server 2005
100 - SQL Server 2008/R2
110 - SQL Server 2012
120 - SQL Server 2014
130 - SQL Server 2016
140 - SQL Server 2017

此外,Azure SQL数据仓库和并行数据仓库不支持OFFSET子句,从ORDER BY子句的文档中可以看出:

-- SQL Server和Azure SQL数据库的语法ORDER BY order_by_expression COLLATE collation_name,...n ::= { OFFSET {integer_constant | offset_row_count_expression }{ ROW | ROWS } FETCH { FIRST | NEXT }{ integer_constant | fetch_row_count_expression }{ ROW | ROWS }}

-- Azure SQL数据仓库和并行数据仓库的语法[ ORDER BY { order_by_expression ASC | DESC },...n ]

票数 14
EN

Stack Overflow用户

发布于 2019-12-18 23:08:29

我的问题是我试图在一个视图上使用OFFSET,但是没有加入。

有问题的查询:

代码语言:javascript
复制
declare @PageSize int = 25;
declare @PageNumber int = 1;

with countCte as 
(
    select count(*) as TotalCount from vw_viewName vn
    where 1=1
)
select * from vw_viewName vn
cross join countCte cou
where 1=1
OFFSET @PageSize * (@PageNumber - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE)

添加order by解决了此问题:

代码语言:javascript
复制
where 1=1
order by vn.ID desc
OFFSET @PageSize * (@PageNumber - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE)
票数 4
EN

Stack Overflow用户

发布于 2022-02-23 09:45:45

要添加此错误的可能常见原因(尽管不是OP情况),请执行以下操作:

缺少ORDER BY子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42263984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档