我有一个包含多列的表。我正在使用SQL Server 2008.我需要根据从另一个表中获取的值,更改每个raw的表增量中的一行的值。
例如,如果我的表项是:
row1 row2 row3
kk aa 1
bb ss 2
我需要从另一个表中读取一个值,例如:MAX(Table_2.row9)= 5,然后将表修改为:
row1 row2 row3
kk aa 6
bb ss 7
我知道IDENTITY列我的想法是将列作为IDENTITY,然后有一个类似的代码:
ALTER TABLE <TABLE> IDENTITY = (select MAX(F27)+1 FROM <TABLE2>)
答案 0 :(得分:2)
答案 1 :(得分:1)
如果重新设置了IDENTITY值,它不会影响现有的行,只会计入新插入的行。如果您的列是标识,您将无法更新它。
如果您只需要更新值,那么您可以保持简单:
DECLARE @m INT
SELECT @m = MAX(F27)+1 FROM Table2
UPDATE Table1
SET Row3 = Row3 + @m
编辑 - 了解更多信息后 如果您在更新后需要该列成为标识 - 您将不得不采取一些解决方法:
除了拥有标识属性外,创建一个相同的新表。
为新表
将数据从现有表复制到新表,调整所需ID(已在旧表中更新)
为新表
DROP现有表格(或者为安全起见,现在将其重命名为TableName_OLD)
将新表重命名为旧名称
OR
只需使用Management Studio的表设计器将列的IDENTITY属性更改为是。它将在后台为您完成上述所有步骤。