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


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'

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.