根据sku前缀更新产品表

时间:2010-03-04 22:10:08

标签: sql sql-server-2005

我有一个产品表,其所有产品的制造商ID目前为-1。

我有一个具有SKU前缀的制造商表。

因此,如果MFG sku前缀是:ABC

然后产品表将有ABC123,ABC3434等产品。

所以我需要一个查询来更新products表,根据Manufacturer表中的skuPrefix设置manufacturerID。

这可能吗?

2 个答案:

答案 0 :(得分:2)

UPDATE tblProducts
SET P.manufacturerId = M.manufacturerId
FROM tblProducts P
JOIN tblManufacturers M ON LEFT(P.Sku, 3) = M.SkuPrefix
-- above, replace 3 with whatever the prefix length is
--WHERE  possibly some where condition

以上应该可以解决问题。但是要考虑一些因素:

  • 在非常大的产品表的情况下,最好以小批量执行这些更新,即通过引入一些where条件(取决于恢复模型,这可以避免过多地破坏SQL日志) )
  • 需要定义前缀的长度,当然,我使用3作为说明目的,一个可能需要5或8?
  • 如果前缀长度是可变的,则可以使用
    ... (ON CHARINDEX(P.Sku, M.SkuPrefix) = 1)
    作为连接条件。

答案 1 :(得分:0)

UPDATE tblProducts 
SET manufacturerId = M.manufacturerId 
FROM tblProducts P 
JOIN tblManufacturers M ON M.Sku + '%' LIKE P.sku

应该这样做