数据库名称: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' 这样更新就很明确 不会有模棱两可的情况了 所以 是不是上面的写法不够好 不够明确 应该要更改? 谢谢