2

我正在运行以下语句,无法理解为什么update影响 0 行,而 aselect具有相同的连接并where返回 1 行。它们都是类型Varchar,并且 crmnumberAC 更大,因此应该能够从 AccountNumber 中获取字符串。想法?

begin transaction
update c
set c.crmnumberAC = a.AccountNumber
--select a.name, a.AccountNumber, c.fullname, c.crmnumberAC 
from Contact as c
right join Account as a
    on c.PFH_Mapping_Ac_ContacId = a.AccountId
WHERE (a.AccountNumber IS NOT NULL AND c.crmnumberAC IS NULL) 
    OR a.AccountNumber != c.crmnumberAC
rollback transaction

这是我取消注释select并运行到where;时的结果集

在此处输入图像描述

4

1 回答 1

5

如您所见,您SELECT没有从您尝试访问的表 Contact 中返回任何内容UPDATE

返回一行只是因为您有一个正确的SELECT连接,但是在表 Contact 中您没有满足 where 条件的行。

于 2013-10-25T09:42:24.543 回答