Il UPDATE la query che visualizzi è esattamente la stessa di:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' è un equivalente più veloce per subject ~ 'tester' . Dettagli per LIKE , LIKE e corrispondenza di espressioni regolari (~ ) nel manuale
o in questa risposta correlata su dba.SE:
E in modo efficace lo stesso di:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Usa questo invece.
Se devono essere presenti più righe nella tabella email con lo stesso fromemailaddress corrispondenza di una riga in fromemailaddress , questo modulo ne esegue solo uno aggiornamento per riga, a differenza del tuo sfortunato originale.
Non lasciarti confondere dal fatto che fromemailaddress viene utilizzato come colonna e come nome della tabella qui.
Leggi attentamente il manuale qui e qui . In particolare questo bit: