2013-04-12 75 views
0

我有一個表包含了諸如列索引表:如何創建一個基於現有的表在MySQL

time tv_program  user_name 
xxx friends   John 
xxx Game of Thrones Kate 
... 
... 

現在我想創建單獨的索引表tv_program和USER_NAME喜歡:

id tv_program 
1 friends 
2 Game of Thrones 
3 ... 
4 ... 

id user_name 
1 John 
2 Kate 
3 ... 
4 ... 

並更新原始表格,用索引號碼替換tv_program和user_name,而不是像

time tv_program user_name 
xxx  1   1 
xxx  2   2 
...  ...   ... 

有沒有簡單的方法來做到這一點?非常感謝!!

回答

1

你基本上要規範你的數據,你可以與MySQL查詢做到這一點:

id自動增量,name指數獨特

INSERT創建一個表tv_programs表INTO tv_programs(名稱)選擇DISTINCT tv_program FROM original_table

現在你有一個包含一個表程序,他們的id自動由MySQL創建,所以你現在必須運行一個帶有連接的UPDATE(使用字符串名稱,如果你有很多數據並且沒有索引,但是你只運行一次就會很慢)並更新原始表與連接表的ID(tv_programs)

UPDATE original_table OT LEFT JOIN tv_programs Tp上ot.tv_program = tp.name SET ot.tv_program = tp.id

現在你可以改變tv_program列的類型爲INT

重複其他表。進行備份之前,或向原始表中添加一列(例如tv_program_id)並使用ID更新該列,以便在刪除舊列之前運行其他查詢來檢查結果,並繼續

希望這一點很清楚。

相關問題