PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Instrukcja UPDATE z wieloma połączeniami w PostgreSQL

Tak samo jak ważna UPDATE oświadczenie w Postgresie:

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

Nie możesz po prostu użyć aliasu tabeli w FROM klauzula jako tabela docelowa w UPDATE klauzula. Ta (jedna!) tabela do aktualizacji pojawia się zaraz po UPDATE słowo kluczowe (jeśli zignorujemy możliwe ONLY słowo kluczowe pomiędzy). Możesz tam dodać alias, jeśli chcesz. To bezpośrednia przyczyna komunikatu o błędzie, ale to nie wszystko.

Aktualizowana kolumna zawsze pochodzi z jednej tabeli, która ma być aktualizowana i nie może być zakwalifikowana do tabeli.

Nie musisz powtarzać tabeli docelowej w FROM klauzula - z wyjątkiem szczególnych przypadków, takich jak:

Ten opcjonalny dodatek pozwala uniknąć bezsensownych kosztów, blokując aktualizacje, które niczego nie zmieniają:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Zobacz:

Więcej w doskonałej instrukcji 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. PostgreSQL wybierz wartość i przyrost na raz

  2. Uzyskiwanie nieznanego klucza podstawowego dla tabeli, gdy identyfikator jest tam

  3. Wyeliminuj podwójne cudzysłowy z pola json w selektywny sposób w PostgreSQL

  4. Identyfikator kolumny Doctrine nie istnieje w PostgreSQL

  5. Wiele niechcianych rekordów w Grupuj według klauzuli w Postgress