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

问题描述:

我有一个表产品有一个制造商字段。制造商领域目前的型号为VARCHARMySQL插入到表中从另一个表中选择数据

我认为最好创建一个表制造商和改变产品表包括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

下面的答案看起来像是你在做什么。但是,如果你还在挣扎,请看:[为什么我应该为我认为是非常简单的SQL查询提供一个MCVE?](https://meta.*.com/questions/333952/why-should- i-provide-an-mcve-for-what-seems-to-a-very-simple-sql-query) – Strawberry

你想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; 
+0

感谢您的回复并让我走上正轨。我无法得到上述查询工作,但以下排序的东西:**更新产品p内部联接制造商m上p.manufacturer = m.name SET p.manufacturer_id = m.id; ** – user1061799