win*_*sgm 2 sql sql-server-2008
我正在运行以下语句,并且无法理解为什么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
Run Code Online (Sandbox Code Playgroud)
当我取消注释select并且只运行那个时,这是结果集where;

正如您所看到的,您SELECT不会从表格中返回任何内容,即您正在尝试的表格UPDATE.
在SELECT返回一行,只是因为你有一个正确的加入,但在表跟你没有一行满足WHERE条件.