La UPDATE la consulta que muestra es exactamente la misma que:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' es un equivalente más rápido para subject ~ 'tester' . Detalles para LIKE , LIKE y coincidencia de expresiones regulares (~ ) en el manual
o en esta respuesta relacionada en dba.SE:
Y efectivamente lo mismo que:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Usa esto en su lugar.
Si debe haber varias filas en la tabla email con el mismo fromemailaddress hacer coincidir una fila en fromemailaddress , entonces este formulario solo ejecuta uno actualización por fila, a diferencia de su desafortunado original.
No se deje confundir por el hecho de que fromemailaddress se usa como columna y como nombre de tabla aquí.
Lea atentamente el manual aquí y aquí . En particular este bit: