我希望这些计数能够匹配,但它们会被一些记录所取代。什么可能导致这种情况?
DECLARE @ExpectedCount INT = 0;
DECLARE @UpdatedCount INT = 0;
SELECT @ExpectedCount = COUNT(*)
FROM [dbo].[Table1] t
JOIN [dbo].[Table2] s ON s.IdColumn = t.IdColumn
UPDATE t
SET t.StadiumId = s.StadiumId
FROM [dbo].[Table1] t
JOIN [dbo].[Table2] s ON s.IdColumn = t.IdColumn
SELECT @UpdatedCount = @@ROWCOUNT
PRINT @ExpectedCount
PRINT @UpdatedCount
答案 0 :(得分:2)
SELECT COUNT(*)将显示t1和t2的JOIN中的行数。
在UPDATE之后@@ ROWCOUNT ... t1 JOIN t2将在t1 中更新的行数。
数字不同,因为它们计算的是不同的东西。一个简单的解释是t1
中的一行,t2
中有两行匹配:COUNT(*)为2,UPDATE计数为1. QED。
答案 1 :(得分:0)
请尝试此UPDATE
UPDATE [dbo].[Table1]
SET StadiumId = s.StadiumId
FROM [dbo].[Table2] s
WHERE s.IdColumn = [dbo].[Table1].IdColumn