我对SQL很陌生,所以如果我提出简单的问题,我会道歉。
所以,我有一个表CompProd
,其中包含公司及其产品,如下所示:
Company Name | Product Name
--------------------------------
Company Alpha | Prod_A1
Company Alpha | Prod_A2
Company Alpha | Prod_A3
Company Alpha | Prod_B1
Company Beta | Prod_A4
Company Beta | Prod_B2
Company Beta | Prod_B3
还有一个表ProdCat
,其中包含产品类别,如下所示:
Product Name | Product Category
------------------------------------
Prod_A1 | A
Prod_A2 | A
Prod_A3 | A
Prod_A4 | A
Prod_B1 | B
Prod_B2 | B
Prod_B3 | B
我想要做的是,首先在表格Product Category
中添加一列CompProd
,然后填写表格ProdCat
中的列。
以下是我的代码:
ALTER dbo.CompProd
ADD Product_Category VCHAR(20)
UPDATE dbo.CompProd
Set dbo.CompProd.Product_Category = (
SELECT cat.Product_Category
FROM dbo.CompProd comp LEFT JOIN dbo.ProdCat cat
ON comp.Product_Name = cat.Product_name
)
由于每个表都有数百万行,因此运行上面的代码块需要花费大量的时间。
有更有效的方法吗?
非常感谢。
答案 0 :(得分:0)
CompProd
Company Name | Product_Id
--------------------------------
Company Alpha | 1
Company Beta | 2
products
Product Name | Product Category | id
-----------------------------------------
Prod_A1 | A | 1
Prod_A2 | A | 2
Prod_A3 | A | 3
Prod_A4 | A | 4
Prod_B1 | B | 5
Prod_B2 | B | 6
如果将表格结构编辑到此。这不是更好吗? 你不需要更新10000条记录!。