PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres SQL SELECT e UPDATE se comportando de maneira diferente


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.