sql - 避免在 postgres plpgsql 函数中几乎重复查询
问题描述
有没有比几乎重复两次查询更好的方法在 plpgsql 函数中编写此查询?有什么办法可以说 ifvalB
为 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;
解决方案
您可以使用OR
带有参数的条件:
update mytable
set colA = valA
where (valb is null and colC = valC)
or (valb is not null and (colb, colc) = (valb, valc));
推荐阅读
- mysql - 如果用户名是禁用组的一部分,则 MySQL 返回列
- machine-learning - 线性回归在归一化或标准化后给出更差的结果
- android - 使用约束布局将图像放置在另一个图像的左上角
- javascript - 使用 data-value 获取 datalist 对象的选定选项的 id
- c# - 我有一个 C# Windows 窗体可以将值输入到 SQL Server 数据库中,但它不会工作,但没有错误?
- c - 双指针作为 execvp() 的参数
- ios - 带有数字键盘的自动填充用户名似乎在 iOS 12 中损坏(适用于 iOS 11)
- php - 如何根据月份名称生成随机密码?
- scala - 为什么scala编译器说类型参数不符合界限?
- javascript - 如何显示已排序的数组