假设我有以下句子,内部连接的结果是3行,其中a.Id =# Z, d! D$ W* e+ ?/ B
b.Id,但是3行中的每行都有不同的b.Value。因为只更新了tableA所以在更新中使用了哪一行? ' M8 ]. e- R* Q7 B6 W" \( F8 MUPDATE aSET a.Value = b.ValueFROM tableA AS aINNER JOIN tableB as b ON a.Id = b.Id 8 p, E4 K% I' X( H 解决方案: 5 i9 M) y7 ?! d) z
我认为没有规则,你不能依赖特定的结果。 5 L* q$ X, M( o- j$ y( F如果要排在特定行之后,请说出最后一行,可以用apply,例如:4 N- q' @: v+ G+ H. O5 i$ Y
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