木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2013-06-19 👁 7970 👍 0 💬 0 🔄 本站原创
若是更新第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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 使用FlashFXP计划任务实现双机文件互备 下一篇 → SQL Server数据误删恢复方法