有趣的是,我没有找到有关这个特定但基本问题的帖子。
目标:更新最新的预算 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