如何根据MySQL中第三个表中的id将数据从一个表复制到另一个表?

时间:2016-03-16 07:13:51

标签: php mysql sql phpmyadmin wamp

我有三张表,比如

表1

它是一个空白表,其列与Table2相同。

表2

它包含需要在Table1中复制的实际数据。

id   cola   colb   colc cold
1     hd     dj    dj    dh
2     hf     uy    ug    se
...

表3

在将数据从Table2复制到Table1之前,首先我需要验证表3中是否存在id。换句话说,我只想将Table2中的行复制到Table3中,其中的id存在于Table3中。<​​/ p>

id   col1    col2
1     xy      zz
2     ys      sh

还有一件事 Table2 &amp; 表3 包含数百万行,因此查询必须可行。

5 个答案:

答案 0 :(得分:2)

有人认为这是一个重复的问题 但答案是

insert into Table1 
select * from Table2 where Table1.id=Table2.id

答案 1 :(得分:1)

使用子查询的选项1:

insert into Table1 
select * from Table2 where id in (select id from Table3)

选项2使用INNER JOIN:

insert into Table1 
select * from Table2 INNER JOIN Table3 USING(id);

答案 2 :(得分:0)

您可以使用 EXISTS

<强>查询

insert into Table1(id, cola, colb, colc, cold)
select id, cola, colb, colc, cold
from Table2 t
where exists(
    select * from Table3
    where id = t.id
);

JOIN

insert into id, cola, colb, colc, cold
select t1.id, t1.cola, t1.colb, t1.colc, t1.cold
from Table2 t1
join Table3 t2
on t1.id = t2.id;

答案 3 :(得分:0)

 insert into Table1 
select * from Table2 where id in (select id from Table3)

如果table1和table2中的列数相同

,则上述查询将起作用

否则

    insert into Table1 (column1,column2,.....)
select column1,column2...  from Table2 where id in (select id from Table3)

答案 4 :(得分:0)

使用加入。它更快。

insert into table1 (id, cola, colb, colc, cold)
select t2.id,t2.cola,t2.colb,t2.colc,t2.cold 
  from table2 t2 
left join 
       table3 t3 
  on t2.id=t3.id
where t3.id is null