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

Postgres SQL SELECT og UPDATE opfører sig forskelligt

Brugen af ​​~ foreslår, at du bruger Postgres. Hvis det er tilfældet, gør de to forespørgsler meget forskellige ting. I Postgres inkluderer du ikke tabellen, der opdateres i from klausul.

Så jeg tror, ​​du vil:

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

Din version opdaterer alle rækker i fromemailaddress fordi der ikke er nogen betingelse, der forbinder fromemailaddress i update klausul og fea i from klausul.

Bemærk også:left join er unødvendig, fordi where klausul gør det alligevel til en indre joinforbindelse.



  1. PostgreSQL initdb (Database Initialization) på Linux

  2. Udsættelse af hyppige opdateringer i MySQL

  3. #1075 - Forkert tabeldefinition; der kan kun være én autokolonne, og den skal defineres som en nøgle

  4. Sådan ændres max_allowed_packet size