在这个小提琴:https://rextester.com/edit/SPVQGW21946
我想用tableA
更新tableB
- 第一行的值,从ccc
到null
的字段false
这是一个upsert
查询,需要一种方法来比较tableB
是否有不同的值,然后以一种简单的方式更新这些字段。
我坚持使用where
条款,我不确定如何将boolean
字段与update
进行比较:
INSERT INTO tableA (company, option, new, gap, ccc)
SELECT company, option, new, gap, ccc
FROM tableB
ON CONFLICT (company, option)
DO update
set new= EXCLUDED.new,
gap = excluded.gap,
ccc = excluded.ccc
WHERE
?
是否有一种简洁的方法来比较布尔值来更新?
(我有insert
的原因是因为tableB
可能有新行。)
我想你想在where子句中使用IS DISTINCT FROM
。
WHERE (tableA.new,tableA.gap,tableA.ccc)
IS DISTINCT FROM (EXCLUDED.new,excluded.gap,excluded.ccc);