Sql server SQL Server限制1和限制1,1语法错误

Sql server SQL Server限制1和限制1,1语法错误,sql-server,limit,Sql Server,Limit,有趣的是,我没有找到关于这个具体但基本的问题的帖子 目标:更新最新的budgetid记录docstatus=0。然后我想更新倒数第二个budgetid记录docstatus=1。我在PHP中尝试了这一点,但也在我的SQL Server SEM中进行了测试,结果也失败了 我的SQL Server语句: select budgetid, docstatus, datechanged from ccy_budget where activityid = 11111

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

目标:更新最新的budgetid记录docstatus=0。然后我想更新倒数第二个budgetid记录docstatus=1。我在PHP中尝试了这一点,但也在我的SQL Server SEM中进行了测试,结果也失败了

我的SQL Server语句:

select 
    budgetid, docstatus, datechanged 
from 
    ccy_budget 
where 
    activityid = 11111 
order by 
    datechanged desc 
limit 1,1;
SEM中出现的错误为:

“limit”附近的语法不正确

然而,在W3SQL中,这个[示例]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

限制1是mysql语法。您需要选择sql server中的前1名Yep sql server mySQL。2008年不支持这个概念。令人遗憾的是,并非所有的SQL都是相同的T-SQL、PL\SQL、mySQL、Postgresql、sybase、dB2。。。它们都有各自的功能变体。你在哪里找到了极限?@dcparham你读过提示了吗?对于SQL Server或MSAccess等数据库,请使用SELECT TOP语句限制结果。SELECT TOP语句是微软专有的等同于SELECT LIMIT语句的内容。我认为w3schools是一个很好的网站,仅供参考。我认为对于那些学习或不熟悉sql的人来说,这不是一个好地方。如果你想玩示例,试着创建你自己的表,并在sql fiddle或rextester中玩它们。如果2012+如果2008有问题,请不要认为这会起作用。war-你的代码在我看来很奇怪,但我确实尝试过,它正在工作!非常感谢!!我将把它塞进php中的sql变量中,就像这样==>;使用cte作为select*,按日期排列的订单上的行数更改为预算表中的描述,其中activitynum=11111从cte中选择*,其中rn=2Glad对您有帮助