在microsoft sql server 2008中运行查询之前如何知道将影响多少行

use*_*099 13 sql t-sql sql-server sql-server-2008

我读过一些关于ROWCOUNT的内容,但它并不是我想要的.从我的理解rowcount说明运行查询后受影响的行数.我正在寻找的是在运行查询之前知道.这可能吗?

Joe*_*eph 11

简短的回答是没有..

在SQL Server中执行query..atleast之前,无法获取行数.

最好的方法是使用

Select count(*) from <table> where <condtion>
Run Code Online (Sandbox Code Playgroud)

然后执行您的实际查询

 [delete]or [update] [set col='val']
 from <table> where <condtion>
Run Code Online (Sandbox Code Playgroud)

  • @HimanshuSaini:据我所知,在更新之前,SQL服务器不会检查旧值和新值是否相同.它只是更新匹配条件的所有记录.如果您有任何相关文件,请分享.那对我来说是新的学习 (2认同)

jab*_*abs 10

您也可以BEGIN TRANSACTION在执行操作之前使用.您可以看到受影响的行数.从那里,COMMIT结果或用于ROLLBACK将数据恢复到原始状态.

BEGIN TRANSACTION;

UPDATE table
SET col = 'something'
WHERE col2 = 'something else';
Run Code Online (Sandbox Code Playgroud)

查看已更改的数据,然后:

COMMIT;
Run Code Online (Sandbox Code Playgroud)

要么

ROLLBACK;
Run Code Online (Sandbox Code Playgroud)