我必须使用表'B'中的值更新表'A'中的列。如果表'B'中有任何值 为null或为空,然后我必须从表'C'获取值。
Manu
答案 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都为空的情况。