15

ROWCOUNT について少し読んだことがありますが、探しているものとはまったく異なります。私の理解では、rowcount は、クエリを実行した後に影響を受ける行の数を示しています。私が探しているのは、クエリを実行する前に知っていることです。これは可能ですか?

4

5 に答える 5

14

BEGIN TRANSACTION操作を実行する前に使用することもできます。影響を受けた行の数を確認できます。そこからCOMMIT、結果またはを使用ROLLBACKしてデータを元の状態に戻します。

BEGIN TRANSACTION;

UPDATE table
SET col = 'something'
WHERE col2 = 'something else';

変更されたデータを確認してから、次のことを行います。

COMMIT;

また

ROLLBACK;
于 2012-09-15T23:07:51.867 に答える
12

短い答えはノーです..

SQLサーバーで少なくともクエリを実行する前に行数を取得することはできません。

それを行う最良の方法は、使用することです

Select count(*) from <table> where <condtion>

次に、実際のクエリを実行します

 [delete]or [update] [set col='val']
 from <table> where <condtion>
于 2012-09-15T12:11:03.410 に答える
3

推定実行計画は、統計に基づいて影響を受ける行を提供するため、この場合はあまり役に立ちません。

私がお勧めするのは、UPDATE statementorDELETE statementをコピーしてに変換することSELECTです。それを実行して、返される行数を確認すると、更新または削除された行数に対する答えが得られます。

例えば:

UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'

になります:

SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
于 2012-09-15T12:11:05.127 に答える
1

SELECT * FROM...最も簡単な解決策は、実行する前に、クエリの列とSELECT Count(*) FROM ...残りのクエリを置き換えることです(WHERE句は同じである必要があります)。これにより、影響を受ける行数がわかります

于 2012-09-15T12:10:52.630 に答える