10

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

4

2 回答 2

19

可以这么简单,

UPDATE tableName
SET    thirdCol = firstCol + secondCol
于 2013-03-01T15:59:29.417 回答
6

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

UPDATE  MyTable
SET     Column3 = Column1 + Column2;

然而,存储计算值,尤其是对于简单的计算不是一个好的做法(总是有例外,这是一个准则而不是规则),如果 column3 应该始终是 Column1 和 column2 的总和,那么如果您的 DBMS 允许,您可以创建一个计算的柱子。

例如在 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

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

于 2013-03-01T16:05:46.720 回答