sql >> Database >  >> RDS >> PostgreSQL

Postgres SQL SELECT en UPDATE gedragen zich anders

Het gebruik van ~ suggereert dat u Postgre gebruikt. Als dat zo is, doen de twee query's heel verschillende dingen. In Postgres neemt u de tabel die wordt bijgewerkt niet op in de from clausule.

Dus ik denk dat je wilt:

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

Uw versie werkt alle rijen in fromemailaddress bij omdat er geen voorwaarde is om fromemailaddress . te verbinden in de update clausule en fea in de from clausule.

Let ook op:de left join is niet nodig omdat de where clausule verandert het hoe dan ook in een inner join.



  1. Installatie van RODBC/ROracle-pakketten op OS X Mavericks

  2. Waarom een ​​TSQL-instructieblok invoegen als het transactie-isolatieniveau voor een andere transactie serialiseerbaar is met een niet-conflicterend filter?

  3. SQL Group BY, Top N Items voor elke groep

  4. Slaapstand verslikt zich in ontbrekende rijen bij het omgaan met een verouderde database