2013-11-25 100 views
1

我對SQL trully的瞭解不是很好,無法執行我想要的任務。 我有2個表格: 一個是有很多列的長數據表,其中一個是TypeName,最近我在表TypeID(它是空的atm)增加了新列。像:MySQL:如何使用基於從另一個表中選擇的值填充現有表的新列

column1 column2 column3 TypeName TypeID 
------------------------------------------------ 
...  ...  ...  name1   NULL 
...  ...  ...  name2   NULL 
...  ...  ...  name1   NULL 
...  ...  ...  name3   NULL 
...  ...  ...  name1   NULL 
...  ...  ...  name4   NULL 
...  ...  ...  name5   NULL 

第二個表我稱爲referenceTable。它將每個可能的TypeName映射到TypeID。像:

TypeID  TypeName 
------------------- 
0   name1 
1   name2 
2   name3 
etc... 

我想填充參考表中基於數據表的基於通訊對象的TypeID。 這將是什麼查詢?

編輯: 是的我想從數據表中刪除TypeName填充TypeID列與正確的值後。 而且我正在尋找一次爲整個表做這個的查詢。

+0

請告訴我們你的嘗試。 – Flimzy

+0

你試過更新...選擇...或閱讀其他帖子http://stackoverflow.com/questions/1262786/mysql-update-query-based-on-select-query? – nrathaus

+0

我只是試圖想出更新...選擇...查詢,但我的知識確實只允許它爲單行。但如何做整桌這樣的事情我不知道。順便說一句,不知道我的更新...選擇... thingy將是第一位的核心。 – user2997497

回答

9

要更新不插入:

UPDATE table1 t1 
INNER JOIN table2 t2 ON t1.typeName = t2.typename 
SET t1.typeID = t2.typeID 

但是,如果你要對你真的應該考慮的只有一個外鍵(也許這TYPEID)兩個表中的重複值,並有該名稱只在一個參考表。

+0

我的意圖是在用正確的值填充TypeID後從數據表中刪除TypeName。如果是的話,我可以做你建議的查詢嗎? – user2997497

+0

是的,但要確保先查詢並將其刪除。 –

+0

謝謝!完成了。 – user2997497

相關問題