Cách tốt để sử dụng bí danh bảng trong câu lệnh Cập nhật?


95

Tôi đang sử dụng SQL Server và đang cố gắng cập nhật các hàng từ trong cùng một bảng. Tôi muốn sử dụng bí danh bảng để dễ đọc.

Đây là cách tôi đang làm vào lúc này:

UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra
INNER JOIN  dbo.Rates rb
ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
AND rb.PriceSched = 't9'

Có cách nào dễ dàng hơn / tốt hơn không?


1
Tôi thích sử dụng từ khóa tùy chọn "AS" (FROM dbo.Rates AS ra) để dễ đọc.
Robert S.

3
Tôi muốn sử dụng thích hợp ANSI JOIN FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- nó tiêu chuẩn, đó là rõ ràng hơn, và nó tránh được bất kỳ Tích Descartes không mong muốn bằng cách quên JOIN điều kiện (s) trong mệnh đề WHERE của bạn ....
marc_s

1
marc_s có một điểm tốt; Tôi đã chỉnh sửa SQL để sử dụng cú pháp THAM GIA rõ ràng hơn
thực

Câu trả lời:


46
UPDATE ra 
   SET ra.ItemValue = rb.ItemValue
  FROM dbo.Rates ra
 INNER JOIN dbo.Rates rb
         ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
  AND rb.PriceSched = 't9';

Điều này có thể giúp cải thiện hiệu suất.


2
Tại sao?? Bạn không thay đổi bất cứ thứ gì ngoại trừ mỹ phẩm!
underscore_d

1

Bí danh bảng trong Truy vấn Cập nhật trong T-SQL (Microsoft SQL). đối với MS SQL Server 2008 R2, nó hoạt động tốt

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.