1

複数の行を選択して別のテーブルに挿入しています。レコードが既に存在する場合は、既存の行を更新するか、新しいレコードを挿入するだけです。

Table:

ID   VALUE   SOFid

3     44     5555
5     43     5555
8     88     8888

私の新記録は

INSERT INTO TABLE (6,88,5555)
INSERT INTO TABLE (1,89,5555)
INSERT INTO TABLE (5,99,5555)
INSERT INTO TABLE (8,76,5555)

既存のレコードに値を追加する必要がある同じIDを取得した場合、どうすれば先に進むことができますか..

    Proc for my query:
   CREATE  PROC Test
     @ID INT,
     @VALUE1 INT,
     @@SFOid int
    AS
    BEGIN
    IF @ID=(SELECT ID FROM Table WHERE ID= @ID AND SFOid=@SFOid)
    BEGIN
    UPDATE Rotation 
    SET value=@VALUE1+(SELECT value FROM Rotation WHERE ID=@ID AND SFOid=@SFOid)
    WHERE ID=@ID AND SFOid=@SFOid
    END
    ELSE 
    INSERT INTO Table
    VALUES(@ID,@VALUE1,@SFOid)
    END
4

3 に答える 3

0

1 つのテーブルに対して複数の操作を行う場合、このような状況では Merge ステートメントを使用すると非常にうまく機能するようです。

テーブル 1 を tbl1 としてマージ

USING (SELECT 列 1、列 2、列 3、…..テーブル 2 から) AS tbl2

ON tbl1.Column1 = tbl2.Column1

一致した場合

アップデート

SET -- 更新しているものは何でもあなたの更新

一致しない場合

INSERT INTO TableName(Column1、Column2、Column3......)

VALUES(値 1、値 2、値 3、......);

行く

于 2013-09-22T17:21:17.500 に答える