2010-03-04 56 views
2

我有一個產品表,它有一個所有產品當前爲-1的manufacturerID。更新基於sku前綴的產品表

我有一個製造商的表,有一個SKU前綴。

因此,如果MFG SKU的前綴是:ABC

那麼產品表將有產品,如ABC123,ABC3434。

所以我需要一個查詢來更新產品表,根據製造商表中的skuPrefix來設置manufacturerID。

這是可能的嗎?

回答

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 

以上這些都應該有效。然而一些因素:

    在一個非常大的產品表的情況下
  • ,它可能是優選的以小[ER]批次執行這些更新中,通過引入一些其中條件(取決於恢復模式,即,這可能會避免太多破壞SQL日誌)
  • 需要定義前綴的長度,當然,我用3來說明,可能需要5或8個?
  • 如果不知何故前綴長度是可變的,一個可以是能夠使用
    ... (ON CHARINDEX(P.Sku, M.SkuPrefix) = 1)
    作爲連接條件。
+0

你可能要設置P.manufacturerId = M.manufacturerID –

+0

@Russel。感謝您指出了這一點。我不認爲表格說明符在這裏是必要的(因爲它隱含在'UPDATE tableName'語法中),但它可能不會受到傷害。 – mjv

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

應該這樣做

+0

你可能是指'P.sku LIKE M.sku +'%'',而不是其他方式 – mjv