如何使用相同的代码值将更新语句从一个表重复到另一个表?

时间:2015-04-10 10:43:53

标签: sql excel sql-server-2012

我正在使用带有Excel电子表格的Microsoft SQL服务器管理工​​作室

我从2个单独的电子表格中提取了2个表。

一个表(StockList)拥有我的供应商提供的5600行产品的数据,我可以每天提取,

    ProductCode VARCHAR(40),
    Brand VARCHAR(40),
    ProductDescription VARCHAR(300),
    UnitPrice VARCHAR(40),
    CTNPrice VARCHAR(40)

另一张表(MasterSheet)是我当前的订单清单,包含600行产品

     Code VARCHAR(40),
     Item VARCHAR(40),
     Unit VARCHAR(10),
     Price VARCHAR(10),
     PerPack VARCHAR(10),
     PackSize VARCHAR(10)

由于价格从我的供应商变更,但代码保持不变,我想要做的是通过参考代码自动更新[StockList]表中[MasterSheet]表的价格。以下语句一次更新其中一个代码

     UPDATE MasterSheet
     set price = (select UnitPrice from StockList where ProductCode = '38074')
     from StockList
     where code = '38074'

完美无缺,但我想知道你是否可以用一个语句同时更新所有代码,而不是创建数百个更新语句。我只是想从[StockList]更新[price]。

谢谢

2 个答案:

答案 0 :(得分:2)

您可以加入这两个表,一次更新所有记录。

UPDATE MS SET
    Price = SL.UnitPrice
FROM MasterSheet MS
    INNER JOIN StockList SL
        ON MS.Code = SL.ProductCode

答案 1 :(得分:0)

您可以使用相关子查询来扩展逻辑:

UPDATE MasterSheet ms
     set price = (select UnitPrice from StockList sl where sl.ProductCode = ms.Code);

您的原始查询看起来不正确。它更简单:

 UPDATE MasterSheet
     set price = (select UnitPrice from StockList where ProductCode = '38074');
     where code = '38074';

请注意删除from子句。

使用from StockList只意味着相同的更新会重复数千次 - StockList中的每一行都会重复一次。