SQL Server LIMIT 1 和 LIMIT 1,1 语法错误



有趣的是,我没有找到有关这个特定但基本问题的帖子。

目标:更新最新的预算 ID 记录文档状态 = 0。然后我想更新倒数第二个预算 id 记录文档状态 = 1。我正在PHP中尝试此操作,但也在我的SQL Server SEM中进行测试,并且在那里也失败了。

我的 SQL 服务器语句:

select 
    budgetid, docstatus, datechanged 
from 
    ccy_budget 
where 
    activityid = 11111 
order by 
    datechanged desc 
limit 1,1;

SEM 中发生的错误是:

接近"限制"的语法不正确。

然而在w3schools中,这个[示例] sql工作得很好:

SELECT * 
FROM Customers 
ORDER BY postalcode DESC 
LIMIT 1,1;

看起来很简单,我肯定错过了一些基本的东西。

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
Apr  2 2010 15:48:46 
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

SQL Server 中的等效语法为

select * 
from table
order by somerow desc
offset 1 rows fetch next 1 rows only;

但是以上是从SQL Server 2012开始提供的,所以对于你的版本,你必须像下面这样的事情

;with cte
as
(
select *,row_number() over (order by postalcode desc) as rn
from table
)
select * from cte where rn=2

最新更新