Câu trả lời được đưa ra ở trên của Aaron là hoàn hảo:
UPDATE a
SET a.CalculatedColumn = b.[Calculated Column]
FROM Table1 AS a
INNER JOIN Table2 AS b
ON a.CommonField = b.[Common Field]
WHERE a.BatchNo = '110';
Chỉ muốn thêm lý do tại sao sự cố này xảy ra trong SQL Server khi chúng tôi cố gắng sử dụng bí danh của một bảng trong khi cập nhật bảng đó, cú pháp đề cập bên dưới sẽ luôn báo lỗi:
update tableName t
set t.name = 'books new'
where t.id = 1
trường hợp có thể là bất kỳ nếu bạn đang cập nhật một bảng hoặc cập nhật trong khi sử dụng tham gia.
Mặc dù truy vấn trên sẽ hoạt động tốt trong PL / SQL nhưng không phải trong SQL Server.
Cách chính xác để cập nhật bảng trong khi sử dụng bí danh bảng trong SQL Server là:
update t
set t.name = 'books new'
from tableName t
where t.id = 1
Hy vọng nó sẽ giúp mọi người tại sao lỗi đến đây.
UPDATE table1 a SET a.[field] = b.[field]
- loại bỏ bí danh có tác dụng, vì vậyUPDATE table1 a SET [field] = b.[field]