有没有比将查询重复两次的更好的方法来编写此查询?有什么方法可以说valB
是否为null,那么它应该与colB
中的任何内容匹配,实际上应该从where子句中删除?
if (valB is not null) then
update mytable set colA = valA where (colB, colC) = (valB, valC);
else
update mytable set colA = valA where (colC) = (valC);
end if;
答案 0 :(得分:1)
您可以将OR
条件与参数一起使用:
update mytable
set colA = valA
where (valb is null and colC = valC)
or (valb is not null and (colb, colc) = (valb, valc));
答案 1 :(得分:1)
您可以使用or
。我可以这样说:
update mytable
set colA = valA
where colC = valC and
(valb is null or colb = valb);