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

UPDATE-sætning med flere joinforbindelser i PostgreSQL

Det samme som gyldig UPDATE udtalelse 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 ikke bare bruge et tabelalias i FROM klausul som måltabel i UPDATE klausul. Den (én!) tabel, der skal opdateres, kommer lige efter UPDATE søgeord (hvis vi ignorerer en mulig ONLY). søgeord i mellem). Du kan tilføje et alias der, hvis du vil. Det er den umiddelbare årsag til din fejlmeddelelse, men der er mere.

Kolonnen, der skal opdateres, er altid fra den ene tabel, der skal opdateres og kan ikke tabelkvalificeres.

Du behøver ikke at gentage måltabellen i FROM klausul - bortset fra særlige tilfælde som dette:

Denne valgfri tilføjelse kan undgå meningsløse omkostninger ved at undertrykke opdateringer, der ikke ændrer noget:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Se:

Mere i den fremragende manual på UPDATE .



  1. SQLAlchemy kan ikke oprette forbindelse til Postgresql på localhost

  2. Oracle DBA spørgsmål i realtid

  3. Hvordan søger man i flere kolonner med prioritet i MySQL?

  4. Oracle:ORA-12154:TNS-problem:Excel 64-bit/Windows 10 64-bit