sql >> Databasteknik >  >> RDS >> PostgreSQL

UPDATE-sats med flera kopplingar i PostgreSQL

Samma som giltig UPDATE uttalande i Postgres:

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

Du kan inte bara använda ett tabellalias i FROM sats som måltabell i UPDATE klausul. Tabellen (en!) som ska uppdateras kommer direkt efter UPDATE nyckelord (om vi ignorerar en möjlig ONLY nyckelord däremellan). Du kan lägga till ett alias där om du vill. Det är den omedelbara orsaken till ditt felmeddelande, men det finns mer.

Kolumnen som ska uppdateras är alltid från den ena tabellen som ska uppdateras och kan inte tabellkvalificeras.

Du behöver inte upprepa måltabellen i FROM klausul - förutom speciella fall som detta:

Detta valfria tillägg kan undvika onödiga kostnader genom att undertrycka uppdateringar som inte ändrar någonting:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Se:

Mer i den utmärkta manualen på UPDATE .



  1. Välj Slumpmässig post och Uppdatera samma post i en fråga?

  2. java.util.Timestamp.after() fel när man jämför millisekunder?

  3. Hur skapar man en pdf-fil med mysql-data?

  4. mysql escapende enkla och dubbla citattecken