MySQL插入表中从另一个表中选择数据

时间:2017-06-22 10:33:18

标签: mysql sql

我有一个表产品,其中包含制造商字段。制造商字段目前的类型为 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;

有人能指出我出错的地方吗?

1 个答案:

答案 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;