Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 - Fatal编程技术网

使用相同的主键将多个mySQL表连接到一个表中

使用相同的主键将多个mySQL表连接到一个表中,mysql,Mysql,我有多个mySQL表,每个表都有相同的主键,但列不同。例如,一个表有一组关于发动机类型的信息,另一个表有关于变速箱的信息。VIN用作两个表中的主键 我需要将这些表合并成一个更大的表,即主表,其中VIN是主键,后跟每个表中的所有列。我这样做是为了能够将包含所有车辆信息的主表导出为一个表 我试图在没有一堆精选的col1,col2,col3,。。。。如果可能的话,为了简化和节省时间 谢谢 您必须明确列出所有列 INSERT INTO masterTable (vin, col1, col2, col3

我有多个mySQL表,每个表都有相同的主键,但列不同。例如,一个表有一组关于发动机类型的信息,另一个表有关于变速箱的信息。VIN用作两个表中的主键

我需要将这些表合并成一个更大的表,即主表,其中VIN是主键,后跟每个表中的所有列。我这样做是为了能够将包含所有车辆信息的主表导出为一个表

我试图在没有一堆精选的col1,col2,col3,。。。。如果可能的话,为了简化和节省时间


谢谢

您必须明确列出所有列

INSERT INTO masterTable (vin, col1, col2, col3, col4, col5, col6, col7, ...)
SELECT t1.vin, t1.col1, t1.col2, t1.col3, t2.col4, t2.col5, t3.col6, t3.col7, ...
FROM Table1 AS t1
JOIN Table2 AS t2 ON t1.vin = t2.vin
JOIN Table3 AS t3 ON t1.vin = t3.vin
...

我建议枚举所有项目,但如果您想从其他表中排除VIN,并且只保留一次,您可能可以检查此解决方案

如果我理解正确,您只需要简单的内部联接sintax。。。尝试以下方法:

SELECT table1.colName, table1.colName2, table1.colNameN, table2.colName, table2.colName2, table2.colNameN
FROM table1
INNER JOIN table2
ON table1.VIN = table2.VIN

您必须明确列出列名,因为VIN表在所有表中都是重复的,并且您不希望在主表中有多个副本。我希望避免这种情况,只是因为它太麻烦了,但如果没有解决方法,这是完美的。