0

我需要将两个不同表中的两列复制到新表中:

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

任何人都可以帮忙吗?我应该使用其他查询吗?天呐!

4

3 回答 3

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;
于 2013-10-17T08:46:08.850 回答
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
于 2013-10-17T08:49:50.197 回答
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

于 2013-10-17T08:57:17.213 回答