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

Làm cách nào để chèn vào một bảng từ một bảng khác bằng cách khớp các giá trị?

Bạn có thể tham gia các bảng bổ sung trong UPDATE tuyên bố, cho phép biểu mẫu thích hợp này:

UPDATE books b
SET    author_id = a.author_id
FROM   authors a
WHERE  b.author = a.author_name;

Ba lý do:

  • Nó an toàn hơn. Truy vấn của bạn sẽ ghi giá trị NULL trong mỗi hàng không tìm thấy tác giả phù hợp. Điều đó không thành vấn đề trong trường hợp của bạn, nhưng có thể dẫn đến mất dữ liệu trong các truy vấn tương tự trong đó bạn đã có dữ liệu trong cột cần cập nhật. Phương pháp thay thế của tôi sẽ không làm gì nếu không tìm thấy tác giả phù hợp.

  • Nó nhanh hơn. Ở trên cho một. Nhưng cũng bởi vì các truy vấn phụ có tương quan như bạn có quy mô khủng khiếp. Tham gia vào một bảng thường nhanh hơn, đặc biệt là với nhiều hơn một vài hàng.

  • Nó rõ ràng hơn và dễ dàng điều chỉnh với các cột bổ sung.



  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ạo cơ sở dữ liệu Postgres bằng python

  2. Trả về bản ghi setof (bảng ảo) từ hàm

  3. Làm cách nào để tránh nhiều hàm ẩn với cú pháp (func ()). * Trong truy vấn SQL?

  4. Loại bỏ dấu ngoặc kép khỏi trường json một cách có chọn lọc trong PostgreSQL

  5. Tránh chèn giá trị 'null' vào bảng cơ sở dữ liệu qua JPA