UPDATE заявката, която показвате, е точно същата като:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' е по-бърз еквивалент на subject ~ 'tester' . Подробности за LIKE , ILIKE и съвпадение на регулярен израз (~ ) в ръководството
или в този свързан отговор на dba.SE:
Иефективно същото като:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Използвайте това вместо това.
Ако трябва да има няколко реда в таблицата email със същия fromemailaddress съвпадение на ред в fromemailaddress , тогава този формуляр изпълнява само един актуализиране на ред, за разлика от вашия злополучен оригинал.
Не се бъркайте от факта, че fromemailaddress се използва като колона и като име на таблица тук.
Прочетете внимателно ръководството тук и тук . По-специално този бит: