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

これらの方法のいずれかにより、column1またはcolumn2が更新された場合でも、column3の値が最新の状態に保たれます。

于 2013-03-01T16:05:46.720 に答える