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?


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.