我有三张表,比如
表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 包含数百万行,因此查询必须可行。
答案 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