mysql - 根据数字匹配将两个表合并为第三个表

标签 mysql sql conditional-statements

我想将两个表合并成一个新表,但前提是两个不同的列存在匹配。我需要生成一个 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/

相关文章:

mysql - 具有多个运算符的 SQL WHERE 命令

mysql - 使用条件 WHERE 子句选择表的字段

iphone - iPhone 的汇编 (.s) 代码中的条件编译 - 如何进行?

php - MySQL - 按字符数排序

MySQL 查询返回无效行并且非常慢

向表中插入数据时出现 MySQL 错误 1062 和 1452

mysql - 多维 "WHERE IN"条件?

mysql - 集成sql select语句

mysql - 如何替换或更新表中的现有值

shell - PowerShell 命令行上的链命令(如 POSIX sh &&)