我想将两个表合并成一个新表,但前提是两个不同的列存在匹配。我需要生成一个 CSV 文件,其中包含两个不同表中的组合数据行。下面更详细地解释
有两个表。一个称为“user”,其中包含用户信息,另一个称为“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
如果表中名为“user”的“id”列与“project_details”中名为“userid”的列匹配,该命令将创建一个新表并用两个表填充该表。
这对 MySQL 可行吗?如果是的话,什么命令可以做到这一点?
也许不需要创建新表?阻力最小的路径永远是最好的。
我非常感谢您在这个问题上的逻辑。
最佳答案
您的基本查询如下所示
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
恕我直言,创建额外的表来实现您的目标是没有意义的
关于mysql - 根据数字匹配将两个表合并为第三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241697/