将null替换为join中右表的ID

时间:2017-11-01 19:55:02

标签: sql

我正在选择正确的加入。我在表A中有一些带IDS的行,但并非所有行都在表B中有相应的ID。 我希望将表B中的null IDS替换为基于其他行的表A的IDS。 该替代行没有空值。怎么办呢?

Results sample/results desired

2 个答案:

答案 0 :(得分:0)

SQL有一个命令......

ISNULL(TableB.Id, TableA.Id) AS SomeId

如果TableB.IdNULL,则您TableA.IdSomeId

答案 1 :(得分:0)

这解决了问题的原始版本。

首先,我强烈推荐left join超过right join。当逻辑“保留第一个表中的所有行(并且我知道那是什么)”时,更容易读取查询。

您可以使用coalesce()。在select查询中,您可以执行以下操作:

select coalesce(b.id, a.id)
from a left join
     b
     on a.anothercol = b.anothercol;

但是,我怀疑你打算:

update b
    set id = (select a.id from a where a.anothercol = b.anothercol)
    where id is null;