2017-06-22 225 views
0

我有一個表產品有一個製造商字段。製造商領域目前的型號爲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.stackoverflow.com/questions/333952/why-should- i-provide-an-mcve-for-what-seems-to-a-very-simple-sql-query) – Strawberry

回答

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

感謝您的回覆並讓我走上正軌。我無法得到上述查詢工作,但以下排序的東西:**更新產品p內部聯接製造商m上p.manufacturer = m.name SET p.manufacturer_id = m.id; ** – user1061799

相關問題