2012-07-20 5 views
5

Này, nếu tôi có báo cáo kết quả t-SQL sau đây (được thiết kế để chạy trên SQL Server 2008):Cần làm rõ về CHỌN trong CẬP NHẬT tuyên bố t-SQL

UPDATE tbl 
SET col1 = (
    SELECT MAX(col1) FROM tbl AS t1 WHERE t1.type = tbl.type 
); 

Làm thế nào chính xác làm việc SELECT trong trường hợp này :

  1. nó chọn có tính đến kết quả của mỗi UPDATE, hoặc

  2. nó chọn từ tbl như trước UPDATE bắt đầu cập nhật hồ sơ.

Ai đó có thể làm rõ điều này cho tôi không?

Trả lời

4

2! Truy vấn con của bạn SELECT kéo giá trị được xác định trước khi UPDATE thực hiện bất kỳ thay đổi nào.

+0

Tôi đã thử nghiệm nó trên một ví dụ trực tiếp. Và ... bạn nói đúng. Cảm ơn. – ahmd0

-2

Nó là 1

1. nó chọn có tính đến kết quả của mỗi UPDATE, hoặc

+0

Cảm ơn bạn đã trả lời nhanh chóng. – ahmd0

+0

Giữ trên ... vì vậy nó là 1 hoặc 2 :) Có ai có bất kỳ tham chiếu đến các tài liệu về điều này? – ahmd0

+0

Hãy thử và xem, @ ahmd0. Không cần tài liệu. – ErikE