SQL Server更新满足条件的第N条记录

若是更新第1条记录,比较简单,直接用top(1)就行:

update top(1) UserTask set Status=1 where UserId=10000 and AdId=1

若是N>1,情况稍有点复杂:

update UserTask set Status=1 where Id=(select max(Id) from (select top(N) Id from UserTask where UserId=10000 and AdId=1 order by Id) as tab) and N<=(select COUNT(*) from UserTask where UserId=10000 and AdId=1)

注意:一定要判断满足条件的记录数是否大于等于N,若省略,当满足条件记录小于N条时,被更新的是最后一条记录。

当然了,你还可以用row_number来完成:

update UserTask set Status=1 where Id=(select Id from (select row_number() over(order by Id) as RowNumber,Id from UserTask where UserId=10000 and AdId=1) as tab where RowNumber=N)

以上语句在Microsoft SQL Server 2008 R2测试通过。

评论: 0 | 引用: 0 | 查看次数: 3600
发表评论
登录后再发表评论!