MySQL 连接具有不同列的表

MySQL Joins of tables with different columns

我想创建一个 table,它需要是三个或更多 table 中选定列的组合。我没有任何示例数据,只是添加了用于解释的列。

Table 1

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

Table 2

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

Table 3

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

结果新table必须有

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

我不确定我是需要使用 FULL JOIN 还是使用 UNIONS。 这些 table 中的每一个都包含超过 400,000 行。此处有关需要包含哪些查询的任何帮助都将非常有帮助。

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

您可以尝试以下查询:

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 将两个或多个查询的 data/result 组合成一个结果集,其中包括 UNION 查询中存在的所有行。但是当您使用 JOIN 时,您可以根据 table 之间的逻辑关系从两个或多个 table 中检索数据。

还要补充一点,您应该为 table 添加别名,以便在 select 查询中以及链接 table 时轻松检索列。