我正根據某些條件更新表。我只需要在有可用於該條件的行時更新表格。下面是我的代碼示例:只有有行時更新表並顯示更新的內容
IF EXIST (SELECT COUNT(*) FROM TableA INNER JOIN TableB
ON TableA.Product_ID = TableB.ProductID
WHERE TableA.ProductID = 143)
BEGIN
UPDATE TableA
SET A.ProductID = 123
FROM TableA INNER JOIN TableB ON TableA.ProductID = Table.ProductID
WHERE TableA.ProductID = 143
END
問題:表更新數據,但似乎我每次運行只在有記錄的更新,而不是時間更新了一切。例如,當我運行上面的查詢時,我得到了(10 row(s) affected)
消息,當我再次運行時,我應該得到(0 row(s) affected)
,因爲表已經更新並且IF語句不應該得到任何結果。
我嘗試以下選項,以及:
IF (SELECT COUNT(*) FROM TableA INNER JOIN TableB
ON TableA.Product_ID = TableB.ProductID
WHERE TableA.ProductID = 143) >0
BEGIN
UPDATE TableA
SET A.ProductID = 123
FROM TableA INNER JOIN TableB ON TableA.ProductID = Table.ProductID
WHERE TableA.ProductID = 143
END
問題:上面的查詢只返回Command(s) completed successfully
。我需要結果更新的行數。我怎麼能做到這一點?
TableB中有ProductID爲123的行嗎? – DVT
@@ ROWCOUNT似乎是你正在尋找的東西,但我不確定你爲什麼期望第一個命令的第二次運行不會更新任何東西...... – scsimon
如果你只是運行這個,會發生什麼:「UPDATE A SET ProductID = 123 FROM TableA A INNER JOIN TableB B ON A.ProductID = B.ProductID AND B.ProductID <> 123;「 – DVT