我正在运行以下语句,并且无法理解为什么update
影响0行而select
具有相同的联接且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
;
答案 0 :(得分:5)
正如您所看到的,您的SELECT
不会从表格中返回任何内容,即您正在尝试的表格UPDATE
。
SELECT
只是因为你有一个正确的连接而返回一行,但是在表格中,你没有符合where条件的行。