2

以下のステートメントを実行していますが、同じ結合で1 行を返すupdateのに 0 行に影響する理由を理解できません。それらは両方ともタイプであり、crmnumberAC の方が大きいため、AccountNumber から文字列を取得できるはずです。考え?selectwhereVarchar

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 に答える