2010-01-07 6 views
0

Existe-t-il un meilleur moyen d'écrire l'instruction de mise à jour SQL Server 2005 suivante? Cela semble juste un peu désordonné inefficace.Champ de mise à jour d'une autre table

UPDATE QuotationItem 
SET  Recurring_Cost = 
      (SELECT TOP (1) Recurring_Cost 
      FROM   Products 
      WHERE  (Remote_ID = QuotationItem.Product_ID)) 
WHERE  (Quotation_ID = 115) 

Merci,

Nick

Répondre

0

est votre TOP 1 vraiment besoin? Si c'est le cas, puisque vous ne spécifiez pas de commande, vous avez quand même des résultats assez aléatoires de votre requête! Si ce n'est pas vraiment nécessaire, cela va faire:

UPDATE q 
SET  Recurring_Cost = p.RecurringCost 
FROM QuotationItem q 
     INNER JOIN 
       Products p 
       ON p.Remote_ID = q.Product_ID 
WHERE q.Quotation_ID = 115 
2

Comment propos de l'utilisation d'une jointure

UPDATE QuotationItem 
SET Recurring_Cost = p.recurring_cost 
FROM QuotationItem q join Products p on q.Product_ID = p.Remote_ID 
WHERE q.Quotation_ID = 115 
Questions connexes