为什么这不起作用并给我一个“偏移命令附近的语法不正确”错误
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兼容模式,则该关键字不可用。
查看或更改数据库的兼容级别 https://msdn.microsoft.com/en-us/library/bb933794.aspx
在 T-SQL 中你可以这样检查:
USE AdventureWorks2012;
GO
SELECT compatibility_level
FROM sys.databases WHERE name = 'AdventureWorks2012';
GO
以下是兼容性级别列表,取自sp_dbcmptlevel 被弃用后如何检查 SQL Server 数据库兼容性? https://stackoverflow.com/questions/1501596/how-to-check-sql-server-database-compatibility-after-sp-dbcmptlevel-is-deprecate:
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 https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-2017 clause:
-- Syntax for SQL Server and Azure SQL Database
ORDER BY order_by_expression
[ COLLATE collation_name ]
[ ASC | DESC ]
[ ,...n ]
[ <offset_fetch> ]
<offset_fetch> ::=
{
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
[
FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
]
}
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse
[ ORDER BY
{
order_by_expression
[ ASC | DESC ]
} [ ,...n ]
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)