使用来自其他两个表的值更新表中的列

时间:2010-07-21 17:49:53

标签: sql

我必须使用表'B'中的值更新表'A'中的列。如果表'B'中有任何值 为null或为空,然后我必须从表'C'获取值。

Manu

2 个答案:

答案 0 :(得分:4)

使用:

UPDATE A
   SET column = (SELECT COALESCE(b.val, c.value)
                   FROM B b
                   JOIN C c ON c.col = b.col)

COALESCE将从列列表中返回第一个非空值,从左到右处理。

奇怪的是你没有提供表B和C如何相互关联 - 如果它们不相反,你正在看两个表的笛卡尔积(非理想)。我的回答是使用JOIN,希望可能取决于数据。

答案 1 :(得分:0)

基本上:

UPDATE a SET a.FIELD = (CASE WHEN b.FIELD IS NULL or b.FIELD = '' THEN c.FIELD ELSE b.FIELD END)
FROM TABLEA a 
LEFT JOIN TABLEB b on a.id = b.someid
LEFT JOIN TABLEC c on a.id = c.someid

根据您的数据,连接可能是也可能不是LEFT,并且您可能想要处理b.field和c.field都为空的情况。