2013-02-06 104 views
0

假設我有以下表格:如何構建這個sql查詢來創建下列新表?

TABLEA

a_name | age | country 
Jordan | 5 | Germany 
Molly | 6 | Spain 
Paris | 7 | France 

tableB的

b_name | age | country 
Kyle | 5 | Germany 
Bob | 6 | Spain 
Bob | 7 | Spain 
Stephen | 7 | France 
Kyle | 9 | France 
Mario | 2 | Mexico 

我想讓它,這樣我可以產生一個包含表C:

id (auto increment primary key) | age | country | country_marker 
1 | 5 | Germany | 1 
2 | 6 | Spain | 2 
3 | 7 | France | 3 
4 | 7 | Spain | 2 
5 | 8 | France | 3 
6 | 9 | France | 3 
7 | 2 | Mexico | 4 

對於新表:

  • 採取任何獨特的「年齡,國家」對只並將其付諸表C與「country_marker」自動分配基於不同的「國家」遞增的唯一編號

注意沒有國家表,作爲tableC中的「國家」僅基於tableA中的任何國家,tableB和country_marker只是一個系統生成的標識符,用於指示表中的唯一國家/地區。只要滿足上面的項目符號,輸出tableC「id和國家標記」順序就沒有關係。

我已經痛苦地嘗試使用MySQL遊標來製作它,並且想知道它是否可能/什麼是一些SQL查詢或我可以使用的一組查詢,這會比使用遊標更快。

+0

country_marker列是國家表的主鍵嗎? –

+0

假設沒有國家表。根據從tableA和tableB中選擇的數據,它爲國家標記放置一個數字(這就是自動遞增)的唯一原因。使用遊標,我會遍歷tableA和tableB,將每個獨特的年齡,國家/地區對插入到一個新表中,並且country_marker會隨着它遇到一個獨特的國家而增加。 – Rolando

回答

0

我想通過首先創建類似phpmyadmin的表C來解決這個問題。然後,我會編寫一個查詢來從表A和B中提取我想要放入C中的信息。然後,在phpmyadmin中,我會將查詢結果導出到本地計算機上的.sql文件。我打開.sql文件,以進行必要的修改,以在INSERT語句,這樣我可以在.sql文件到表C.

這不正是最有效的方式導入數據,但似乎就像絕對有效的最不技術的方式。