Обновить поле из другой таблицы - PullRequest
0 голосов
/ 07 января 2010

Есть ли лучший способ написать следующий простой оператор обновления 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 ]

2 голосов
/ 07 января 2010

Как насчет использования соединения

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
0 голосов
/ 07 января 2010

Твой 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...