假设我有以下语句,内部联接的结果为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

最佳答案

我认为这种情况没有规则,您不能依赖特定的结果。

如果您要排在特定行之后,例如说最后一行,则可以使用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

关于sql - 更新并联接多行,使用哪一行的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9502449/

10-14 09:57
查看更多