为什么这不起作用,并给我一个“偏移命令附近的语法不正确”错误
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
解决方法
检查数据库兼容级别.
OFFSET是在sql Server 2012中添加的,因此如果您的数据库处于2008兼容模式,则此关键字不可用.
OFFSET是在sql Server 2012中添加的,因此如果您的数据库处于2008兼容模式,则此关键字不可用.
View or Change the Compatibility Level of a Database
在T-sql中,您可以像这样检查:
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?获取的兼容级别列表:
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
子句的文档中看到:
06002
06003