2013-03-01 54 views
7

如果SQL不能這樣工作,我很抱歉,我主要使用C++/C#編寫代碼,而且我沒有太多的SQL經驗。我基本上想遍歷表中的每一行,並根據其他列更改列值。一個例子表可能是這樣的:現在如何基於其他列中的值(對於同一行)更新表中所有行的列?

__________________________ 
|first #|second #|third #| 
|_______|________|_______| 
|___1___|___1____|___0___| 
|___5___|___2____|___0___| 
|___3___|___6____|___0___| 
|___2___|___4____|___0___| 

,在僞代碼,我想獲得相當於:

foreach row in mytable, column 3 = column 1 + column 2 

會是一個什麼方式來獲得一個SQL相當於此,還是不能這樣做?

回答

16

這可能是這樣簡單,

UPDATE tableName 
SET thirdCol = firstCol + secondCol 
5

正如已經回答了一個簡單的更新是可以做到用:

UPDATE MyTable 
SET  Column3 = Column1 + Column2; 

然而儲運caclulated值,特別是對於簡單的計算並不好練習(總是有例外,這不是一條規則),如果column3應該總是Column1和column2的總和,那麼如果你的DBMS允許它,你可以創建一個計算列。

例如在SQL-服務器:

ALTER TABLE MyTable ADD Column4 AS Column1 + Column2; 

如果你的DBMS不允許計算列,那麼你可以創建一個視圖,所以你只能存儲基本數據,而不是計算(同樣的語法可以通過DBMS而異):

CREATE VIEW myTableWithTotal 
AS 
    SELECT Column1, Column2, Column1 + Column2 AS Column2 
    FROM MyTable 

這些方法要麼將確保您的欄3值仍然高達即使列1列2或更新日期

+0

感謝您的附加信息!我很慶幸不需要執行這樣的任何事情,但瞭解未來的應用程序是非常有用的。 – proseidon 2013-03-01 16:10:54

+0

謝謝,但在我們的案例中,原始列將被刪除,但對於未來應用程序的知識很有用。 – Roel 2018-01-17 13:42:30

相關問題