2017-11-26 3 views
0

更新:TSQL:UPDATEゲットnum個の行は、私はこのような更新ステートメントを持つ

UPDATE TABLE1 
SET TABLE1.COL = TABLE2.COL 
FROM TABLE1 
INNER JOIN TABLE2 ON TABLE1.TAB2ID = TABLE2.ID 
WHERE TABLE1.COL1 = '123'` 

実際に更新されたレコードの数を知るための方法があるかどうかの質問です。

MERGEOUTPUT $ACTIONなどです。操作によって影響を受けた行数を識別するために

+0

値が_different_ valueに変更された1つまたは複数の行によって_行_touched_されていますか?クエリは 'where'節に基づいて666行に触れることができますが、42だけが' 123'以外の値に変更される可能性があります。 '@@ RowCount'は最初の値を返します。トリガーは 'inserted'テーブルと' deleted'テーブルを使って第2の値を決定することができます。 – HABO

答えて

1

、あなたはこのためにROWCOUNT @@を使用することができます@@ROWCOUNT

1

を探しています。

UPDATEはそれだけで標準UPDATEクエリの場合、あなたはすぐにアップデートした後にSELECT @@ROWCOUNTを使用することができ、このような...

UPDATE 
    TABLE1 
SET 
    TABLE1.COL = TABLE2.COL 
FROM 
    TABLE1 
INNER JOIN 
    TABLE2 
ON 
    TABLE1.TAB2ID = TABLE2.ID 
WHERE 
    TABLE1.COL1 = '123' 
; 

RETURN @@ROWCOUNT 
; 

、あなたはRETURNそれをすることができ、ユーザー定義関数の一部である場合影響を受ける行の数を確認してください。

1

あなたが欲しいと統計情報を収集する必要がありますが、これを返す@@ROWCOUNT:あなたが意味するか "実際に更新" によって、ここで

declare @ABC table (
ColName varchar(32) 
) 

insert into @ABC values ('A') 
insert into @ABC values ('B') 
insert into @ABC values ('C') 
update @Fish set ColName= 'D' where ColName= 'C' 
select @@ROWCOUNT --Count 1 

update @ABC set ColName= 'X' 
select @@ROWCOUNT -- Count 3 

をオフィシャルソース

https://technet.microsoft.com/en-us/library/ms187316(v=sql.110).aspx

https://docs.microsoft.com/en-us/sql/t-sql/functions/rowcount-transact-sql

関連する問題