Cara yang baik untuk menggunakan alias tabel dalam pernyataan Pembaruan?

95

Saya menggunakan SQL Server, dan mencoba memperbarui baris dari dalam tabel yang sama. Saya ingin menggunakan alias tabel agar mudah dibaca.

Inilah cara saya melakukannya saat ini:

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'

Apakah ada cara yang lebih mudah / lebih baik?

realcals
sumber
1
Saya suka menggunakan kata kunci opsional "AS" (FROM dbo.Rates AS ra) agar mudah dibaca.
Robert S.
4
Saya akan menggunakan sintaks ANSI JOIN yang tepat FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- ini standar, lebih jelas, dan menghindari produk cartesian yang tidak diinginkan dengan melupakan kondisi JOIN di klausa WHERE Anda ....
marc_s
1
marc_s memiliki poin yang bagus; Saya telah mengedit SQL untuk menggunakan sintaks JOIN yang lebih jelas
realcals

Jawaban:

44
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';

Ini mungkin membantu dalam meningkatkan kinerja.

Alexander
sumber
3
Mengapa?? Anda tidak mengubah apa pun kecuali kosmetik!
underscore_d
1

Alias ​​tabel di Kueri Pembaruan di T-SQL (Microsoft SQL). untuk MS SQL Server 2008 R2 ini berfungsi dengan baik

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Subhas Malik
sumber