A
UPDATE consulta exibida é exatamente igual a:UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' é um equivalente mais rápido para subject ~ 'tester' . Detalhes para LIKE , ILIKE e correspondência de expressão regular (~ ) no manual
ou nesta resposta relacionada em dba.SE:E eficaz o mesmo que:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Use isso em vez disso.
Se houver várias linhas na tabela
email com o mesmo fromemailaddress correspondendo a uma linha em fromemailaddress , este formulário só executa um atualização por linha, ao contrário do seu original infeliz. Não se confunda pelo fato de que
fromemailaddress é usado como coluna e como nome de tabela aqui. Leia o manual com atenção aqui e aqui . Em particular este bit: