我正根据某些条件更新表。我只需要在有可用于该条件的行时更新表格。下面是我的代码示例:只有有行时更新表并显示更新的内容
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