如何在SQL查询中返回更新行的计数?

时间:2016-11-15 14:39:44

标签: sql sql-server count

我有一个SQL“更新”查询,我正在通过临时表的内部连接更新匹配的记录。请检查以下查询 -

update tblProduct as p
inner join #temp_Product prod on p.id = prod.id and p.name = prod.name

现在我想根据“id”和“name”返回一个包含“id”,“name”列和更新行数(tblProduct表)的表。

请查看下表 -

1)tblProduct

enter image description here

2)#temp_Product

enter image description here

3)以下结果应该返回

enter image description here

1 个答案:

答案 0 :(得分:1)

根据您的数据库以及用于访问它的内容,您可以直接从update语句获取总更新行的摘要计数,但由于您需要更多详细信息,因此不太可能您可以使用内置数据库支持。

我要做的是运行一个单独的选择查询 - 可能更新之前,但如果可能的话,在相同的事务中 - 将计算要应用的更新。

由于您没有提供SET表达式,因此我无法检查是否确实会进行更改,但这不应该很难添加到查询中(只是为where添加<oldValue> != <newValue>条件;能够做到这一点是你在select之前运行update的原因。

基本查询是:

select p.id, p.name, count(*)
  from            tblProduct as p
       inner join #temp_Product prod 
               on p.id = prod.id 
              and p.name = prod.name
 group by p.id, p.name