如何以干净的方式比较表之间的布尔值以进行更新
How to compare boolean values between tables for update in a clean way
在此fiddle中:https://rextester.com/edit/SPVQGW21946
我想用 tableB
更新 tableA
-- 第一行的值,字段 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);
在此fiddle中:https://rextester.com/edit/SPVQGW21946
我想用 tableB
更新 tableA
-- 第一行的值,字段 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);