Dobry sposób na użycie aliasu tabeli w instrukcji Update?

95

Używam programu SQL Server i próbuję zaktualizować wiersze z tej samej tabeli. Chcę użyć aliasu tabeli, aby zwiększyć czytelność.

W tej chwili robię to w ten sposób:

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'

Czy są łatwiejsze / lepsze sposoby?

Realcals
źródło
1
Lubię używać opcjonalnego słowa kluczowego „AS” (OD dbo.Rates AS ra) w celu zwiększenia czytelności.
Robert S.
4
Użyłbym właściwej składni ANSI JOIN FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- to standard, jest jaśniejszy i pozwala uniknąć niepożądanych produktów kartezjańskich, zapominając o warunku (-ach) JOIN w klauzuli WHERE ....
marc_s
1
marc_s ma rację; Edytowałem SQL, aby użyć jaśniejszej składni JOIN
realcals

Odpowiedzi:

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

Może to pomóc w poprawie wydajności.

Alexander
źródło
3
Czemu?? Nie zmieniłeś niczego oprócz kosmetyków!
underscore_d
1

Alias ​​tabeli w kwerendzie aktualizacji w T-SQL (Microsoft SQL). dla MS SQL Server 2008 R2 działa dobrze

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Subhas Malik
źródło