我有一个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
2)#temp_Product
3)以下结果应该返回
答案 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