我有一个表产品,其中包含制造商字段。制造商字段目前的类型为 VARCHAR 。
我认为最好创建一个表制造商并更改产品表以包含 manufacturer_id 字段,该字段当然是外国的键引用 Manufacturer.id
因此,要将要插入新 Product.manufacturer_id 字段的数据迁移到制造商的 id ,其名称对应于当前 Product.manufacturer 字段。
我在使用以下查询迁移数据时遇到问题:
INSERT INTO Product (manufacturer_id)
SELECT m.id FROM Manufacturer AS m WHERE m.name =
SELECT p.manufacturer FROM Product AS p WHERE p.manufacturer = m.name;
有人能指出我出错的地方吗?
答案 0 :(得分:4)
您需要update
,而不是insert
:
update p
set manufacturer_id = m.id
from product p join
manufacturer m
on p.manufacturer = m.name;
以上是SQL Server语法(不知道为什么我这样做;问题显然是标记为MySQL)。正确的MySQL语法是:
update product p join
manufacturer m
on p.manufacturer = m.name
set p.manufacturer_id = m.id;