資料庫名稱:ms sql server 資料庫版本:2008 各位好 昨天看到了一個update 寫法 如下 T1的欄位和資料如下 ID No Name 1 1 d 2 1 d 3 1 d T2的欄位和資料如下 ID No Na Nc 1 1 A X 4 1 B Y 7 1 C Z update A set Name=B.Nc from T1 A right join T2 B on A.No=B.No where B.Na in ('A','B','C') 如果只看 from 之後的語法 則會撈出九筆資料 但T1其實只有3筆資料 所以每筆都重複了3次 因此update後 到底會更新3筆 還是9筆? 我實際測試後得到 (3 個資料列受到影響) 也就是說 T1的每筆資料 都只會更新一次 既然如此 那T1的Name到底是要更新成 T2的哪個Nc值 是X 是Y 還是Z ? 我透過把 where B.Na in ('A','B','C') 改成 where where B.Na in ('B','C') ,where B.Na in ('A','C') ,where B.Na in ('A','B') 等幾種不同條件去觀察 但還是看不出更新的準則到底為何? 我本來是猜先出現的先更新 第二次以後出現的就不管他 但好像也不是 可以確定的是 如果撈出來的資料 T1部分每筆資料都只出現一次 EX: where B.Na='A' 這樣更新就很明確 不會有模稜兩可的情況了 所以 是不是上面的寫法不夠好 不夠明確 應該要更改? 謝謝