2008-08-28 4 views
94

J'utilise SQL Server et j'essaie de mettre à jour des lignes depuis la même table. Je veux utiliser un alias de table pour la lisibilité.Une bonne façon d'utiliser l'alias de table dans l'instruction Update?

Ceci est la façon dont 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' 

Y at-il plus facile/de meilleures façons?

+3

J'utilise une bonne syntaxe ANSI JOIN 'DE dbo.Rates ra INNER JOIN dbo.Rates rb sur ra.ResourceID = rb.ResourceID' - c'est la standard, c'est plus clair, et cela évite les produits cartésiens indésirables en oubliant les conditions JOIN dans votre clause WHERE .... –

+1

marc_s a un bon point; J'ai édité le SQL pour utiliser la syntaxe JOIN plus claire – realcals

+1

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

Répondre

45
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

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

UPDATE A_GeneralLedger set ScheduleId=g.ScheduleId 
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID 
Questions connexes