我正在选择正确的加入。我在表A中有一些带IDS的行,但并非所有行都在表B中有相应的ID。 我希望将表B中的null IDS替换为基于其他行的表A的IDS。 该替代行没有空值。怎么办呢?
答案 0 :(得分:0)
SQL有一个命令......
ISNULL(TableB.Id, TableA.Id) AS SomeId
如果TableB.Id
为NULL
,则您TableA.Id
为SomeId
。
答案 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;