SQL Server 2008:更新语句:如何为查询中找到的每 10000 条记录递减一列
我有一个名为 Items 的巨大表,
P_ID Item Rank
1 ItemName1 ValueTBD
我需要能够编写一条更新语句来填充“rank”列的值,如下所示:
- 前 10000 条记录需要值为“10”,
- 对于每个后续 10000 条记录的值为“等级”需要减 1
因此记录 20000 - 30000 :“等级”值为“9”
I have a huge table called Items
P_ID Item Rank
1 ItemName1 ValueTBD
I need to be able to write an update statement to populate the value of the column "rank" as follows:
- The top 10000 records need a value of "10"
- For Each subsequent 10000 records the value of "rank" will need to be decremented by 1
Therefore records 20000 - 30000 : would have "rank" values of "9"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设当您说“顶部”和“后续”时,您实际上暗示“按
P_ID
排序”:这将以正确的范围边界进行更新(1-10000 -> 排名 10、10001-20000 -> ;排名 9、20001-30000 -> 排名 8 等),并且将为 100001 以上的范围分配负排名。您的要求不一致:您说“记录 20000-30000 将具有排名 9”。您的意思可能是“20001-30000 条记录的排名为 8”。
Assuming that when you say 'top' and 'subsequent' you actually imply 'order by
P_ID
':This will update with right range boundary (1-10000 -> rank 10, 10001-20000 - >rank 9, 20001-30000 -> rank 8 etc) and will assign negative ranks for ranges above 100001. Your requirements are inconsistent: you say 'records 20000-30000 would have rank 9'. You probably mean 'records 20001-30000 would have rank 8'.
试试这个:
Try this: