当我运行这个SELECT语句时,我会收到642行......
SELECT *
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name
当我运行此UPDATE语句时,只更新了630行...
UPDATE b
SET b.BGCompanyId = a.RelatedId
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name
JOIN是相同的,那么受影响的行数如何不同?两个语句都可以正确执行。我不明白这是怎么可能的。谁能提供任何见解?我错过了有关更新/加入如何工作的内容吗?
答案 0 :(得分:3)
最好的猜测是,对于B的每个值,A中有更多匹配。因此select
语句返回A的连接重复项 - 但update
仅更新行一次。
换句话说,您选择的附加值是B(不是A)的表示。
----更新后的问题编辑-----
您确定要更新正确的值吗?确保正确的表(A或B)位于update语句的左侧。您似乎已经编辑了问题并切换了最初发布的内容。然而,理论仍然是相同的。
答案 1 :(得分:0)
如果b.BGCompanyId已经等于a.RelatedId,它将不会显示为已更新。
您可以通过修改原始查询来验证这一点:
SELECT *
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name
WHERE b.BGCompanyID != a.RelatedId