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.