将行更改为增量

时间:2013-06-27 00:11:48

标签: sql sql-server-2008

我有一个包含多列的表。我正在使用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>)

2 个答案:

答案 0 :(得分:2)

您是否正在寻找UPDATE声明:

update table1 
set row3 = row3 + (select max(f27) from table2);

答案 1 :(得分:1)

如果重新设置了IDENTITY值,它不会影响现有的行,只会计入新插入的行。如果您的列是标识,您将无法更新它。

如果您只需要更新值,那么您可以保持简单:

DECLARE @m INT
SELECT @m = MAX(F27)+1 FROM Table2

UPDATE Table1
SET Row3 = Row3 + @m

编辑 - 了解更多信息后 如果您在更新后需要该列成为标识 - 您将不得不采取一些解决方法:

  1. 除了拥有标识属性外,创建一个相同的新表。

  2. 为新表

  3. 设置标识插入ON
  4. 将数据从现有表复制到新表,调整所需ID(已在旧表中更新)

  5. 为新表

  6. 设置标识插入OFF
  7. DROP现有表格(或者为安全起见,现在将其重命名为TableName_OLD)

  8. 将新表重命名为旧名称

  9. OR

    只需使用Management Studio的表设计器将列的IDENTITY属性更改为是。它将在后台为您完成上述所有步骤。