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
се използва като колона и като име на таблица тук.
Прочетете внимателно ръководството тук и тук . По-специално този бит: