postgresql - postgres 可以决定 = 和 <> 之间的最佳选择
问题描述
我有两种方法来更新表的记录,但不确定哪种方法最好。
第一种使用 <> 运算符
update daily_tender_sales
set amount = jd.amount,
amount_count = jd.amount_count,
amount_cancel = jd.amount_cancel,
amount_cancel_count = jd.amount_cancel_count
from tender_sales_Json_data jd
where _drop = false AND daily_tender_sales.id = jd.id
AND(daily_tender_sales.amount <> jd.amount
or daily_tender_sales.amount_count <> jd.amount_count
or daily_tender_sales.amount_cancel <> jd.amount_cancel
or daily_tender_sales.amount_cancel_count <> jd.amount_cancel_count)
第二种方式使用 = 运算符
update daily_tender_sales
set amount = jd.amount,
amount_count = jd.amount_count,
amount_cancel = jd.amount_cancel,
amount_cancel_count = jd.amount_cancel_count
from tender_sales_Json_data jd
where _drop = false AND daily_tender_sales.id = jd.id
AND NOT(daily_tender_sales.amount = jd.amount
AND daily_tender_sales.amount_count = jd.amount_count
AND daily_tender_sales.amount_cancel = jd.amount_cancel
AND daily_tender_sales.amount_cancel_count = jd.amount_cancel_count)
解决方案
推荐阅读
- kubernetes - 无法在 Kubernetes 集群中安装 Istio
- .net - 卸载 .NET framework 4.7 并在 Azure 机器上安装 4.5
- javascript - 如何在 Django 模板中使用 JavaScript?
- python - 如何正确地将数组从 Django/Python 传递到 Postgres/PLPGSQL 存储的 proc 可变参数
- javascript - 将 HTML 元素的 innerText 复制到剪贴板
- linux - `execve()` 是否设置寄存器来调用动态链接器或要执行的可执行文件?
- command-line-interface - 术语 'OC_EDITOR="subl" 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
- python - PyTorch weak_script_method 装饰器
- java - 未找到 Intellij JavaFX helloWorld 模块
- javascript - 在新窗口中打开一个 src 脚本