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: