Bon moyen d'utiliser l'alias de table dans l'instruction Update?


95

J'utilise SQL Server et j'essaie de mettre à jour les lignes à partir de la même table. Je souhaite utiliser un alias de table pour plus de lisibilité.

Voici comment je le fais en ce moment:

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'

Existe-t-il des moyens plus faciles / meilleurs?


1
J'aime utiliser le mot-clé optionnel "AS" (FROM dbo.Rates AS ra) pour la lisibilité.
Robert S.

3
J'utiliserais la bonne syntaxe ANSI JOIN FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- c'est la norme, c'est plus clair et cela évite tout produit cartésien indésirable en oubliant la ou les conditions JOIN dans votre clause WHERE ....
marc_s

1
marc_s a un bon point; J'ai modifié le SQL pour utiliser une syntaxe JOIN plus claire
realcals

Réponses:


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

Cela peut aider à améliorer les performances.


2
Pourquoi?? Vous n'avez rien changé sauf les cosmétiques!
underscore_d

1

Alias ​​de table dans la requête de mise à jour dans T-SQL (Microsoft SQL). pour MS SQL Server 2008 R2, cela fonctionne très bien

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.