如何在多行中增加1个值?

时间:2015-05-06 20:34:22

标签: sql sql-server

我有一个项目税表,记录了我们州不同县的不同税率。每行都有一个ID号(1-130)。当我们希望按字母顺序排列时,我们的前端软件总是按此编号订购税务选项。我们的大多数行都是以这种方式添加的,但我希望能够插入行。

因此我需要在一定数量之后为每个条目添加1(例如37-130需要全部增加一个)。不幸的是,这是主要的关键。是否可以轻松地增加所有这些值?还是循环?我必须反复这样做,因为如果可能的话我们会移动十几个条目。

UPDATE ItemTax
SET ID = ID + 1
WHERE ID = Last ID number

2 个答案:

答案 0 :(得分:0)

将您的问题视为学术问题,而不是将其视为实际解决方案,您可以这样做:

UPDATE ItemTax
SET ID = ID + 1
WHERE ID > 37

答案 1 :(得分:0)

根据您使用此ID的方式,最好不要更改原始ID列。 E.g。

for xo, yo in self.neighbor_deltas:
    neighbor = self.agents.get((x+xo, y+yo))
    if neighbor is not None:
        if neighbor == thisRace:
            count_same += 1
        else:
            count_other += 1

现在您不必更新外键关系等

你知道,因为ID通常代表一个代理键,所以不应该在一个好的设计中改变它的值。因此,你改变它的价值的愿望导致怀疑你不应该理解你的设计。 - 我们都是从无知开始,过去我做了一些非常糟糕的决定。

如果这是NewID的唯一变化,您甚至不需要物理列,计算列就能很好地运行。但如果这是许多物理色谱柱的第一个模型,那么它可能是更好的选择。

您还提到插入行。在一些空间中构建以根据需要插入行和更改值,因为您可以通过调整值来重新排列行,而无需重新编号整个行块只是为了插入单行,例如。

alter table TaxItem add NewID int null
GO

update TaxItem set NewID = 
case
  when ID between 37 and 130 then ID + 1
  else ID
end