PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Câu lệnh UPDATE với nhiều phép nối trong PostgreSQL

Giống như UPDATE hợp lệ tuyên bố trong 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

Bạn không thể chỉ sử dụng bí danh bảng trong FROM mệnh đề dưới dạng bảng đích trong UPDATE mệnh đề. Bảng (một!) Sẽ được cập nhật đến ngay sau UPDATE từ khóa (nếu chúng tôi bỏ qua một ONLY có thể có từ khóa ở giữa). Bạn có thể thêm bí danh ở đó nếu muốn. Đó là nguyên nhân ngay lập tức gây ra thông báo lỗi của bạn, nhưng còn nhiều hơn thế nữa.

Cột được cập nhật luôn nằm trong một bảng sẽ được cập nhật và không thể đủ điều kiện trong bảng.

Bạn không cần lặp lại bảng mục tiêu trong FROM mệnh đề - ngoại trừ những trường hợp đặc biệt như thế này:

Việc bổ sung tùy chọn này có thể tránh chi phí vô nghĩa bằng cách chặn các bản cập nhật không thay đổi bất kỳ điều gì:

AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no

Xem:

Xem thêm trong hướng dẫn tuyệt vời về 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. Tắt cảnh báo trong sqlalchemy

  2. Mục tiêu thời gian khôi phục Pgbackrest

  3. Làm thế nào để sử dụng lược đồ trong Django?

  4. mysql_insert_id thay thế cho postgresql

  5. Làm thế nào để thực hiện tổng hợp giống nhau trên mọi cột mà không cần liệt kê các cột?