sql >> Database >  >> RDS >> PostgreSQL

UPDATE-instructie met meerdere joins in PostgreSQL

Hetzelfde als geldige UPDATE verklaring in Postgre:

UPDATE incode_warrants iw
SET    warn_docket_no = iv.viol_docket_no
FROM   incode_warrantvs  iwvs
JOIN   incode_violations iv ON iv.viol_citation_no = iwvs.warnv_citation_no
                           AND iv.viol_viol_no = iwvs.warnv_viol_no
WHERE  iw.warn_rid = iwvs.warnv_rid;
-- AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no -- see below

U kunt niet zomaar een tabelalias gebruiken in de FROM clausule als doeltabel in de UPDATE clausule. De (één!) tabel die moet worden bijgewerkt komt direct na UPDATE zoekwoord (als we een mogelijke ONLY ignore negeren zoekwoord ertussen). Je kunt daar een alias toevoegen als je wilt. Dat is de directe oorzaak van je foutmelding, maar er is meer.

De kolom die moet worden bijgewerkt, komt altijd uit de ene tabel die moet worden bijgewerkt en kan niet worden gekwalificeerd.

U hoeft de doeltabel in de FROM . niet te herhalen clausule - behalve in speciale gevallen zoals deze:

Deze optionele toevoeging kan zinloze kosten vermijden door updates die niets veranderen te onderdrukken:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Zie:

Meer in de uitstekende handleiding op UPDATE .



  1. Hoe bekijk ik de volledige inhoud van een tekst- of varchar(MAX)-kolom in SQL Server 2008 Management Studio?

  2. MySQL-trigger na update alleen als rij is gewijzigd

  3. Waarom werkt deze MySQL-update niet?

  4. Het aanroepen van een Oracle PL/SQL-procedure in Java met behulp van een CallableStatement met een boolean IN-parameter geeft een PLS-00306 orakelfout: