如何根据其他列中的值(对于同一行)更新表的所有行中的列?

时间:2013-03-01 15:58:30

标签: sql sql-update

如果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等价物的方法,或者不能以这种方式完成?

2 个答案:

答案 0 :(得分:18)

这可能很简单,

UPDATE tableName
SET    thirdCol = firstCol + secondCol

答案 1 :(得分:5)

正如已经回答的那样,可以使用以下方式完成简单的更新:

UPDATE  MyTable
SET     Column3 = Column1 + Column2;

然而,存储caclulated值,特别是对于简单的计算是不好的做法(总是有例外,这是一个指导而不是规则),如果column3应该总是Column1和column2的总和,那么如果你的DBMS允许它你可以创建一个计算列。

e.g。在SQL-Server中:

ALTER TABLE MyTable ADD Column4 AS Column1 + Column2;

如果您的DBMS不允许计算列,那么您可以创建一个视图,因此您只存储基础数据而不是计算(再次语法可能因DBMS而异):

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

即使更新了column1或column2,这些方法中的任何一种都将确保您的column3值保持最新