基于数字匹配将两个表组合成三个表

时间:2013-04-26 17:05:15

标签: mysql sql conditional

我想将两个表组合成一个新表,但条件是两个不同的列匹配。我需要生成一个CSV文件,其中包含来自两个不同表的组合数据行。下面更详细地解释

有两张桌子。一个称为“用户”,其中包含用户信息,另一个称为“project_details”,其中包含项目详细信息。我想创建一个csv文件,它根据user_id的匹配将邻近的“用户”数据(附加到最右侧)合并到记录project_details数据。 换句话说,只有在存在user_id匹配时,它的节目才会组合记录。

Table Name = user  This table contains simple table information
id          name        
1           Bill            
2           Steve       
3           Joe 

Table Name = project_details
project_name        color       userid
House Project       blue        2

SQL结果

Table Name = combined_info
project_name        color       name    userid
House Project       blue        Steve   2

如果tabled中名为“user”的“id”列与“project_details”中名为“userid”的列匹配,则该命令会创建一个新表并用两个表填充它。

这可能与MySQL有关吗?如果是这样的命令会做什么?

也许没有必要创建一个新表?阻力最小的路径总是最好的。

我无法提前感谢你对这个问题的理解。

1 个答案:

答案 0 :(得分:1)

您的基本查询看起来像

SELECT p.project_name,
       p.color,
       u.name,
       p.userid
  FROM project p JOIN
       user u ON p.userid = u.id

<强> SQLFiddle

现在,如果要创建CSV文件,则可以使用INTO OUTFILE子句

SELECT p.project_name,
       p.color,
       u.name,
       p.userid
  INTO OUTFILE '/tmp/mydata.csv'
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
       LINES TERMINATED BY '\n'
   FROM project p JOIN
       user u ON p.userid = u.id

恕我直言,创建一个额外的表来实现目标是没有意义的