получение ошибки "ОШИБКА: отсутствует запись предложения FROM для таблицы" test1 " - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь использовать ограничение для обновления строк в случае дубликатов, обнаруженных в postgres, но я получаю сообщение об ошибке "ОШИБКА: отсутствует запись предложения FROM для таблицы" test1 ""

INSERT INTO wfo_data_aggregation.test2 
SELECT * 
FROM wfo_data_aggregation.test1 
ON CONFLICT ON CONSTRAINT test2_un 
  do update set inbound_handled_seconds = wfo_data_aggregation.test1.inbound_handled_seconds 
            AND contacts_handled_inbound = wfo_data_aggregation.test1.contacts_handled_inbound 
            AND outbound_handled_seconds = wfo_data_aggregation.test1.outbound_handled_seconds 
           AND contacts_handled_outbound = wfo_data_aggregation.test1.contacts_handled_outbound  
WHERE NOT EXISTS (SELECT * 
                  FROM wfo_data_aggregation.test2  
                  WHERE start_time = wfo_data_aggregation.test1.start_time 
                    AND end_time = wfo_data_aggregation.test1.end_time 
                    AND site_name = wfo_data_aggregation.test1.site_name 
                    AND skill_id = wfo_data_aggregation.test1.skill_id 
                    and site_id = wfo_data_aggregation.test1.site_id 
                    AND channel = wfo_data_aggregation.test1.channel 
                    AND inbound_handled_seconds = wfo_data_aggregation.test1.inbound_handled_seconds 
                    AND contacts_handled_inbound = wfo_data_aggregation.test1.contacts_handled_inbound 
                    AND outbound_handled_seconds = wfo_data_aggregation.test1.outbound_handled_seconds 
                    AND contacts_handled_outbound = wfo_data_aggregation.test1.contacts_handled_outbound 
                    AND tenure = wfo_data_aggregation.test1.tenure )

1 Ответ

0 голосов
/ 11 октября 2019

Предложение DO UPDATE использует специальный синтаксис EXCLUDED для ссылки на исключенную вставку:

INSERT INTO wfo_data_aggregation.test2 
SELECT * 
FROM wfo_data_aggregation.test1 
ON CONFLICT ON CONSTRAINT test2_un 
  do update set inbound_handled_seconds = EXCLUDED.inbound_handled_seconds 
            AND contacts_handled_inbound = EXCLUDED.contacts_handled_inbound 
            AND outbound_handled_seconds = EXCLUDED.test1.outbound_handled_seconds 
           AND contacts_handled_outbound = EXCLUDED.test1.contacts_handled_outbound  
WHERE NOT EXISTS (SELECT * 
                  FROM wfo_data_aggregation.test2  t2
                  WHERE t2.start_time = test1.start_time 
                    AND t2.end_time = test1.end_time 
                    AND t2.site_name = test1.site_name 
                    AND t2.skill_id = test1.skill_id 
                    and t2.site_id = test1.site_id 
                    AND t2.channel = test1.channel 
                    AND t2.inbound_handled_seconds = test1.inbound_handled_seconds 
                    AND t2.contacts_handled_inbound = test1.contacts_handled_inbound 
                    AND t2.outbound_handled_seconds = test1.outbound_handled_seconds 
                    AND t2.contacts_handled_outbound = test1.contacts_handled_outbound 
                    AND t2.tenure = test1.tenure )
...