我有一个客户表,我需要更新并用id(整数)替换一列(varchar)。让我们调用第一个表Customers和第二个Products 因此,我想拥有该产品的id(外键),而不是拥有varchar(例如,产品A)。产品位于另一个具有id和productName的表中:
我试过这个:
UPDATE customers
SET s_product = (SELECT id from products WHERE products.productName = customers.s_product)
但这需要花费很长时间,我需要一种更快的方法来做到这一点。 我也尝试在customers.s_product(BTREE和FULLTEXT)上设置索引,但仍然没有改进。
答案 0 :(得分:2)
你可以在这里尝试加入声明
update customers as c join products as j on c.s_product = j.productName set c.s_product = j.id
答案 1 :(得分:2)
在两个表上创建索引
产品(productName)&客户(s_product)
执行以下查询
UPDATE customers t1, products t2
SET t1.s_product = t2.id
WHERE t1.s_product = t2.productName;