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