2016-11-15 171 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