Bạn không có UPDATE FROM
độc quyền của SQL Server cú pháp xuống. Cũng không chắc tại sao bạn cần tham gia trên CommonField
và cũng lọc về nó sau đó. Hãy thử điều này:
UPDATE t1
SET t1.CalculatedColumn = t2.[Calculated Column]
FROM dbo.Table1 AS t1
INNER JOIN dbo.Table2 AS t2
ON t1.CommonField = t2.[Common Field]
WHERE t1.BatchNo = '110';
Nếu bạn đang làm điều gì đó thực sự ngớ ngẩn - chẳng hạn như liên tục cố gắng đặt giá trị của một cột này thành tổng giá trị của cột khác (vi phạm nguyên tắc tránh lưu trữ dữ liệu thừa), bạn có thể sử dụng CTE (biểu thức bảng chung) - xem tại đây và tại đây để biết thêm chi tiết:
;WITH t2 AS
(
SELECT [key], CalculatedColumn = SUM(some_column)
FROM dbo.table2
GROUP BY [key]
)
UPDATE t1
SET t1.CalculatedColumn = t2.CalculatedColumn
FROM dbo.table1 AS t1
INNER JOIN t2
ON t1.[key] = t2.[key];
Lý do điều này thực sự ngớ ngẩn là bạn sẽ phải chạy lại toàn bộ bản cập nhật này mỗi lần một hàng bất kỳ trong table2
những thay đổi. A SUM
là thứ mà bạn luôn có thể tính toán trong thời gian chạy và khi làm như vậy, bạn không bao giờ phải lo lắng rằng kết quả đã cũ.