假设我有以下句子,内部连接的结果是3行,其中a.Id =5 @) ]- q! ^% p- a1 Y: M0 _& w# j
b.Id,但是3行中的每行都有不同的b.Value。因为只更新了tableA所以在更新中使用了哪一行? & e) e8 y( ^& X I) H/ AUPDATE aSET a.Value = b.ValueFROM tableA AS aINNER JOIN tableB as b ON a.Id = b.Id 3 V9 R7 h0 n$ U. r' S7 g 解决方案: . V0 W2 z2 b7 B+ R! o" a& N 我认为没有规则,你不能依赖特定的结果。; O4 J7 D" {6 v! a4 q7 y; Z0 {! A; u/ q
如果要排在特定行之后,请说出最后一行,可以用apply,例如:# }7 ?' F# q1 f
UPDATE aSET a.Value = b.ValueFROM tableA AS aCROSS APPLY select top 1 * from tableB as b where b.id = a.id order by DateColumn desc as b