2016-11-15 174 views
0

我有一个SQL“更新”查询,并通过临时表的内部JOIN更新匹配记录。请检查查询如下─如何返回SQL查询中更新的行数?

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

现在我想返回包含“ID”的基础上,列“ID”,“姓名”和更新的行(tblProduct表)的计数表和“名字”。

请检查表如下─

1)tblProduct

enter image description here

2)#temp_Product

enter image description here

3)及以下的结果应该返回

enter image description here

+3

但愿我建议你花点时间和编辑您的帖子使用文字而不是图像,如果你必须使用图片,删除不必要的空白。另外,显示你到目前为止所尝试的。 – scsimon

+0

如果您想在两个表上运行查询,或者您想更新tblProduct,您能更清楚吗?您显示的tblProduct和结果表具有不同的列设置。 – DVT

+0

使用'OUTPUT'子句。 –

回答

1

根据您的数据库和你用来访问它,你也许可以直接从update声明得到总更新的行的汇总数,但因为你需要更多的细节,所以你不可能使用内置的数据库支持。

我会做的是运行一个单独的选择查询 - 可能之前更新,但在同一交易如果可能的话 - 这将计数更新将被应用。

既然你没有提供SET表情,我不能包括检查的改变究竟会做,但不应该是很难添加到查询(刚加入where条件<oldValue> != <newValue>);能够做到这一点的原因是你为什么在update之前运行select

基本查询:

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