【发布时间】:2020-09-14 05:08:40
【问题描述】:
我有这张桌子:
当我删除此表中的一个框时,我需要对以下所有行进行增量。
例如:如果我删除 BoxNo '4' 那么 BoxNo 最后一行之后的行 '4' (5,6,7 ,..etc) 必须增加 1 并且像 (4,5,6,...etc.)。 我希望我能成功地解释这个问题。
能否请您帮我使用 SQL Server 查询来执行此操作?
提前致谢。
【问题讨论】:
-
不要追溯更新值,使用
ROW_NUMBER在SELECT时间计算它们。 SQL 表不是 Excel 工作表,当您删除它时,它们不会全部“向上”一行,表本质上是无序的。 -
为什么要这样做?关心 id 中的空白是一个常见的陷阱。
-
我认为更新行值同时删除其间的行不是一个好习惯。假设您的表中有 1000 条记录,如果您删除第 5 条记录,它将更新剩余的 995 条记录,这非常昂贵。请分享您重新设计的要求。
-
文档应该是你的第一站,@Mark : ROW_NUMBER (Transact-SQL0
-
这只是你不应该做你想做的事的一个原因,@Mark。计算运行时的值;不要存储它。想要存储这些值几乎(我的意思是几乎 99.999% 的时间)总是会推断出设计缺陷。
标签: sql sql-server row-number