我正在使用带有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]。
谢谢
答案 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
中的每一行都会重复一次。