从另一个表更新字段

时间:2010-01-07 12:07:21

标签: sql-server sql-server-2005

有没有更好的方法来编写以下简单的SQL Server 2005更新语句?这似乎有点混乱效率不高。

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

谢谢,

尼克

2 个答案:

答案 0 :(得分:2)

如何使用联接

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

答案 1 :(得分:0)

你的TOP 1真的需要吗?如果是这样,既然你没有指定一个排序,那么你的查询得到了相当随机的结果!如果没有必要,可以这样做:

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