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

时间:2017-10-09 15:49:46

标签: sql-server limit

有趣的是,我没有找到这个具体但基本问题的帖子。

目标:更新最新的budgetid记录docstatus = 0.然后我想更新 next-to-last budgetid记录docstatus = 1.我在PHP中尝试这个但是也在我的SQL中测试服务器SEM也在那里失败。

我的SQL Server声明:

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)

1 个答案:

答案 0 :(得分:3)

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