我需要将两个不同表中的两列复制到新表中:
t1: col1 col2 t2: col3 col4
a1 b1 c1 d1
a2 b2 c2 d2
c3 d3
我需要得到这个:
t3: col1 col4
a1 d1
a2 d2
null d3
我用了查询:
INSERT INTO t3 (col1,col4) SELECT t1.col1, t2.col4 FROM t1,t2
但我得到了这个:
t3: col1 col4
a1 d1
a2 d1
a1 d2
a2 d2
a1 d3
a2 d3
有人可以帮忙吗?我应该使用其他一些查询吗? TNX!
答案 0 :(得分:1)
您使用的是CROSS JOIN
或carthesian产品。这意味着左表中的所有行都将匹配右表中的所有行。发生这种情况是因为您没有告诉MySQL表格行应该如何匹配。
您需要添加JOIN
关键字并指定一个ON子句,它指定匹配规则 - 哪些值必须相等。例如:
SELECT a.col1, b.col4 FROM t1 a INNER JOIN t2 b ON a.id_t2 = b.id;
答案 1 :(得分:0)
为了能够检索上述结果,您需要使用left outer join
,但是我找不到任何链接列。
between your two tables;
INSERT INTO t3 (t1.col1,t2.col4)
SELECT t1.col1, t2.col4
FROM t2
Left Outer Join t1
on --> Your link column between the tables
答案 2 :(得分:0)
看起来您只是尝试将一个表中的第一行连接到另一个表中的第一行,然后将它们插入到第三个表中。此SQL应执行插入:
insert into table3
select col1, col4 from (select @rownum2 := @rownum2+1 as rown, col4 from table2
JOIN (SELECT @rownum2 := 0) r2) t2
left outer join
(
select @rownum := @rownum+1 as rown, col1 from table1
JOIN (SELECT @rownum := 0) r) t1
on t2.rown = t1.rown;
SQL小提琴: http://sqlfiddle.com/#!2/f9314f