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 时轻松检索列。
我想创建一个 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 时轻松检索列。