soo*_*ise 25 sql sql-server sql-server-2008-r2
假设我有以下语句,内连接产生3行,其中a.Id = b.Id,但3行中的每一行都有不同的b.Value.由于只更新了tableA中的一行,因此更新中使用了3个值中的哪一个?
UPDATE a
SET a.Value = b.Value
FROM tableA AS a
INNER JOIN tableB as b
ON a.Id = b.Id
Run Code Online (Sandbox Code Playgroud)
And*_*mar 17
我不认为这个案例有规则,你不能依赖于特定的结果.
如果您在特定行之后,说出最新的行,您可以使用apply,例如:
UPDATE a
SET a.Value = b.Value
FROM tableA AS a
CROSS APPLY
(
select top 1 *
from tableB as b
where b.id = a.id
order by
DateColumn desc
) as b
Run Code Online (Sandbox Code Playgroud)
通常,您在此方案中最终得到的是按表上物理索引的顺序显示的第一行.在实际操作中,您应该将其视为非确定性的,并包含将结果缩小到一行的内容.
| 归档时间: |
|
| 查看次数: |
19034 次 |
| 最近记录: |