如何使用MYSQL将两个表中的记录合并为第三个

时间:2016-06-30 12:44:15

标签: mysql

我有3张表A,B,C

所有3个表的模式与下面提到的相同:

第一张桌子:

cpid ,name, place 

第二张B表:

connectorid,dob

第3张C表:

ccpid cconnectorid 

现在表A和B都有很多记录。 现在A和B中的一些记录具有相同的id。 现在我想将A和B中的记录合并到表C中。 合并逻辑如下

1)If records with cpid = connectorid ,insert into table c.
2)C Table  ccpid is the foreignkey for A table cpid and cconnectorid is the foreignkey B table connectorid.
3)Using select query.

4 个答案:

答案 0 :(得分:1)

您可以使用带有n个内连接的选择插入

 insert into table_c
 select a.cpid, b.connectorid, a.place
 from table_b as b
 inner join table_a as a  on a.id = b.id

答案 1 :(得分:1)

您可以针对您的查询尝试此解决方案:

INSERT INTO `C`(`ccpid`, `cconnectorid`, `ccity`)
SELECT ta.`cpid`, ta.`cconnectorid`, tb.`place`
FROM `A`  as ta
  INNER JOIN `B` tb ON ta.`cpid` = tb.`cconnectorid` 

答案 2 :(得分:1)

您只需要从两个表中连接数据?这是简单的JOIN功能。

SELECT *
    FROM Table_A
    INNER JOIN Table_B
    ON Table_A.cpid =Table_B.connectorid;

您可以将此选择插入Table_C。

这是INNER JOIN,但我认为你应该看看JOIN,MyPlunkr SAMPLE是例子,你可以阅读更多关于其他JOIN的信息。

  

INNER JOIN :当BOTH中至少有一个匹配时返回所有行   表 LEFT JOIN :返回左表中的所有行,并匹配   右表中的行 RIGHT JOIN :返回右侧的所有行   表格,以及左表格中匹配的行 FULL JOIN :全部返回   当其中一个表中存在匹配时的行

答案 3 :(得分:0)

使用以下查询替换您的表名

INSERT INTO CTABLE(ccpid,cconnectorid,ccity)
(SELECT A.cpid ,B.connectorid, A.place FROM 
TABLEA A INNER JOIN TABLEB B ON A.cpid = B.connectorid)