O uso de
~ sugere que você está usando o Postgres. Nesse caso, as duas consultas estão fazendo coisas muito diferentes. No Postgres, você não inclui a tabela que está sendo atualizada no from cláusula. Então, acho que você quer:
update fromemailaddress
set call = true
from email
where email.fromemailaddress = fromemailaddress.fromemailaddress and
LOWER(email.subject) ~ 'tester';
Sua versão está atualizando todas as linhas em
fromemailaddress porque não há nenhuma condição conectando fromemailaddress na update cláusula e fea no from cláusula. Observe também:a
left join é desnecessário porque o where cláusula transforma-o em uma junção interna de qualquer maneira.