Как сравнить логические значения между таблицами для обновления в чистом виде - PullRequest
0 голосов
/ 05 марта 2019

В этой скрипте: https://rextester.com/edit/SPVQGW21946

Я хотел бы обновить tableA с помощью tableB - значение в первой строке, поле ccc с null до false

enter image description here

Вот запрос 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 может иметь новые строки.)

1 Ответ

0 голосов
/ 05 марта 2019

Я думаю, вы хотите IS DISTINCT FROM в предложении where.

 WHERE (tableA.new,tableA.gap,tableA.ccc) 
IS DISTINCT FROM (EXCLUDED.new,excluded.gap,excluded.ccc);

Демо

...