Хороший способ использовать псевдоним таблицы в операторе обновления?

95

Я использую SQL Server и пытаюсь обновить строки из той же таблицы. Я хочу использовать псевдоним таблицы для удобства чтения.

Вот как я это делаю сейчас:

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'

Есть ли способы проще / лучше?

realcals
источник
1
Мне нравится использовать необязательное ключевое слово «AS» (FROM dbo.Rates AS ra) для удобства чтения.
Роберт С.
4
Я бы использовал правильный синтаксис ANSI JOIN FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- он стандартный, он более ясный, и он позволяет избежать любых нежелательных декартовых произведений, забывая условие (я) JOIN в вашем предложении WHERE ....
marc_s
1
marc_s имеет хороший смысл; Я отредактировал SQL, чтобы использовать более четкий синтаксис JOIN
realcals

Ответы:

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

Это может помочь повысить производительность.

Александр
источник
3
Зачем?? Вы не меняли ничего кроме косметики!
underscore_d
1

Псевдоним таблицы в запросе на обновление в T-SQL (Microsoft SQL). для MS SQL Server 2008 R2 он работает нормально

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Субхас Малик
источник