PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изявление UPDATE с множество съединения в PostgreSQL

Същото като валиден UPDATE израз в 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

Не можете просто да използвате псевдоним на таблица в FROM клауза като целева таблица в UPDATE клауза. Таблицата (една!), която трябва да се актуализира, идва веднага след UPDATE ключова дума (ако пренебрегнем възможен ONLY ключова дума между тях). Можете да добавите псевдоним там, ако искате. Това е непосредствената причина за вашето съобщение за грешка, но има и още.

Колоната, която трябва да се актуализира, е винаги от една таблица, която трябва да се актуализира, и не може да бъде квалифицирана като таблица.

Не е необходимо да повтаряте целевата таблица в FROM клауза - с изключение на специални случаи като този:

Това незадължително допълнение може да избегне безсмислени разходи чрез потискане на актуализации, които не променят нищо:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Вижте:

Повече в отличното ръководство на UPDATE .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku Postgres връзка от локално PHP приложение

  2. Динамична централна заявка с помощта на PostgreSQL 9.3

  3. Пропуснете всеки n-ти ред с резултати в PostgreSQL

  4. Как да поставите psql на пътя, когато използвате Postgres.app на OS X?

  5. Postgres GIST срещу Btree индекс