MySQL连接具有不同列的表

时间:2015-03-20 09:56:02

标签: mysql mysqldump mysql-error-1064

我想创建一个表,该表需要是来自三个或更多表的选定列的组合。我没有任何样本数据,只是添加了列进行解释。

表1

A|B1|C1|D1|E1|F1|G1|H1|I1|J1

表2

A|B2|C2|D2|E2|F2|G2

表3

A|B3|C3|D3|E3|F3|G3

结果新表必须

A|B1|E1|F1|G1|J1|C2|D2|G2|B3|D3|F3

我不确定是否需要使用FULL JOIN或使用UNIONS。 这些表中的每一个都包含超过400,000行。这里有关于需要包含哪些查询的任何帮助都会非常有用。

2 个答案:

答案 0 :(得分:2)

您可以尝试以下查询:

select t1.A,t1.B1,t3.E1,t1.F1,t1.G1,t1.J1,t2.C2,t2.D2,t2.G2,t3.B3,t3.D3,t3.F3 
from table1 t1  join table2 t2 on t1.A = t2.A
join table3 t3 join table2 t2 on t3.A = t2.A

由于Palec在另一个答案中正确评论,所以在答案中添加了一些解释。

您需要使用JOINS代替UNION来解决此问题。我之所以在UNION上使用JOINS是因为UNION将两个或多个查询的数据/结果合并到一个结果集中,该结果集包括UNION中查询中存在的所有行。但是当您使用JOIN时,您可以根据表之间的逻辑关系从两个或多个表中检索数据。

另外要添加的是,您应该在表中添加别名,以便在选择查询中以及链接表时更容易检索列。

答案 1 :(得分:0)

Join是正确的方法:

select table1.A,B1,E1,F1,G1,J1,C2,D2,G2,B3,D3,F3 from table1 join table2 on table1.A = table2.A
join table3 join table2 on table3.A = table2.A