在这个小提琴中: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
可能有新行。)
答案 0 :(得分:1)
我认为您想在where子句中使用IS DISTINCT FROM
。
WHERE (tableA.new,tableA.gap,tableA.ccc)
IS DISTINCT FROM (EXCLUDED.new,excluded.gap,excluded.ccc);