sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres SQL SELECT y UPDATE se comportan de manera diferente

El uso de ~ sugiere que está utilizando Postgres. Si es así, las dos consultas están haciendo cosas muy diferentes. En Postgres, no incluye la tabla que se actualiza en from cláusula.

Entonces, creo que quieres:

update fromemailaddress
    set call = true 
    from email
    where email.fromemailaddress = fromemailaddress.fromemailaddress and
          LOWER(email.subject) ~ 'tester';

Su versión está actualizando todas las filas en fromemailaddress porque no hay ninguna condición para conectar fromemailaddress en la update cláusula y fea en el from cláusula.

También tenga en cuenta:la left join es innecesario porque el where la cláusula lo convierte en una unión interna de todos modos.