Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同列的表的MySQL联接_Mysql_Mysqldump_Mysql Error 1064 - Fatal编程技术网

具有不同列的表的MySQL联接

具有不同列的表的MySQL联接,mysql,mysqldump,mysql-error-1064,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 我不确定是否需要使用完全联接或联合。 每一个表都包含超过400000行。这里关于需要包含哪些查询的任何帮助都将非常有用 加入是正确的方式: sel

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

表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
我不确定是否需要使用完全联接或联合。
每一个表都包含超过400000行。这里关于需要包含哪些查询的任何帮助都将非常有用

加入
是正确的方式:

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
正如在另一个答案中正确评论的那样,因此在答案中添加一些解释

您需要使用联接来解决此问题,而不是并集。我之所以说使用联合而不是联合,是因为联合将两个或多个查询的数据/结果组合到一个结果集中,该结果集包含联合中查询中存在的所有行。但是,在使用联接时,可以基于两个或多个表之间的逻辑关系从这些表检索数据


还要补充的是,您应该向表中添加别名,以便在select查询中检索列以及链接表时变得容易。

我收到一个错误1054(42S22):“字段列表”中的未知列“t2.c2”。这是因为在中找不到t2.c2吗table1@user3616977但不是我的问题。请解释一下你的代码是做什么的,以及它是如何回答问题的。如果您得到一个代码片段作为答案,您可能不知道如何处理它。答案应该为OP和未来访客提供如何调试和修复问题的指导。指出代码背后的想法,对理解问题、应用或修改解决方案有很大帮助。获取错误1054(42S22):“字段列表”中的未知列“t2.c2”。这是因为在中找不到t2.c2吗table1@user3616977:-是,如果不存在,则错误是正确的。但是您的表2有C2列(您已经显示),因此在这种情况下它应该可以工作。您只需命名包含C2列的表,如果是table1,则使用t1.C2;如果是table2,则使用t2.C2。如果C2列不存在,那么从您的查询中删除该部分。明白了…我的查询搞砸了…非常感谢您的回复