PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres SQL SELECT e UPDATE si comportano diversamente

L'uso di ~ suggerisce che stai usando Postgres. In tal caso, le due query stanno facendo cose molto diverse. In Postgres, non includi la tabella in aggiornamento nel from clausola.

Quindi, penso che tu voglia:

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

La tua versione sta aggiornando tutte le righe in fromemailaddress perché non ci sono condizioni per collegare fromemailaddress nell'update clausola e fea nel from clausola.

Nota anche:il left join non è necessario perché where la clausola lo trasforma comunque in un inner join.