2013-02-06 71 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.

这不正是最有效的方式导入数据,但似乎就像绝对有效的最不技术的方式。