2013-06-27 122 views
0

我有一個包含多列的表。我正在使用SQL Server 2008.我需要根據從其他表中獲取的值更改表格增量中每行的其中一行的值。將行更改爲增量

例如,如果我的表中的項目是:

row1 row2  row3 
kk  aa  1 
bb  ss  2 

我需要從另一個表例如讀取的值:MAX(Table_2.row9)= 5,然後修改該表爲:

row1 row2  row3 
kk  aa  6 
bb  ss  7 

我知道IDENTITY列的我的想法是讓列身份,然後有一個代碼有點像:

ALTER TABLE <TABLE> IDENTITY = (select MAX(F27)+1 FROM <TABLE2>) 

回答

1

如果你補種IDENTITY值,則不會影響現有行,但僅適用於新插入的次數。如果你的專欄是身份,你將無法更新它。

如果你需要的是簡單地更新值,那麼你可以把它簡單:

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

UPDATE Table1 
SET Row3 = Row3 + @m 

編輯 - 後附加信息: 如果你需要更新列之後,成爲身份 - 你「將不得不做一些變通方法:

  1. 創建新表這是除了具有身份屬性相同。

  2. 集身份從現有表到新表中插入對新表

  3. 複製數據,調整通緝ID(在舊錶已經更新)

  4. 設置標識插入關新表

  5. 刪除現有表(或安全並重命名爲TableName_OLD現在)

  6. 重命名新表,舊名

OR

只要使用Management Studio中的表設計器列的IDENTITY屬性更改爲是。它會在後臺爲您完成上述所有步驟。

+0

謝謝,對於答覆,是的,就是這樣,但重點是,如果我不創建列標識,那麼在列的入口處列將爲空,如果它是標識那麼我無法更改值 – kousha

+0

@kou在這種情況下,您需要做一些解決方法。我將編輯答案來解釋。 –

+0

好的謝謝,腳本需要安排自動執行。所以我正在採用第一種解決方案。 – kousha

2

你是正在尋找一個UPDATE聲明:

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

謝謝,對於答覆,是的,就是這樣,但問題是,如果我不創建列身份,那麼在行的入口列將是空的,如果它是身份,那麼我可以不會改變值 – kousha