Boa maneira de usar o alias da tabela na instrução Update?

95

Estou usando o SQL Server e tentando atualizar as linhas da mesma tabela. Quero usar um alias de tabela para facilitar a leitura.

É assim que estou fazendo no momento:

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'

Existem maneiras mais fáceis / melhores?

realcals
fonte
1
Eu gosto de usar a palavra-chave opcional "AS" (FROM dbo.Rates AS ra) para facilitar a leitura.
Robert S.
3
Eu usaria a sintaxe ANSI JOIN adequada FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- é o padrão, é mais claro e evita quaisquer produtos cartesianos indesejados, esquecendo as condições JOIN em sua cláusula WHERE ....
marc_s
1
marc_s tem um bom argumento; Eu editei o SQL para usar a sintaxe JOIN mais clara
realcals

Respostas:

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

Isso pode ajudar a melhorar o desempenho.

Alexandre
fonte
2
Por quê?? Você não mudou nada, exceto cosméticos!
underscore_d
1

Alias ​​de tabela em Update Query in T-SQL (Microsoft SQL). para MS SQL Server 2008 R2, funciona perfeitamente

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