【问题标题】:Join multiple mySQL tables into one table w/ same primary key将多个 mySQL 表连接到一个具有相同主键的表中
【发布时间】:2015-04-21 20:57:07
【问题描述】:

我有多个 mySQL 表,每个表具有相同的主键但不同的列。例如,一个表有一堆关于引擎类型的信息,另一个表有关于传输的信息。 VIN 用作两个表中的主键。

我需要将这些表组合成一个更大的表(“主表”),其中 VIN 是主键,后跟每个表中的所有列。我这样做是为了可以将包含所有车辆信息的“主表”导出为一张表。

如果可能的话,我试图在没有一堆 SELECT (col1,col2,col3,....) 的情况下做到这一点,以使其简单并节省时间。

谢谢!

【问题讨论】:

  • 您必须明确列出列名,因为 VIN 表在所有表中都重复,并且您不希望主表中有多个副本。

标签: mysql


【解决方案1】:

您必须明确列出所有列。

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
...

【讨论】:

  • 我希望避免这种情况只是因为它太麻烦了,但如果没有解决方法,这是完美的。
【解决方案2】:

我建议枚举所有项目,但如果你想从其他表中排除 VIN 并且只拥有一次,你可以检查这个解决方案 Select all columns except one in MySQL?

【讨论】:

    【解决方案3】:

    如果我对你的理解正确,你只需要简单的 INNER JOIN sintax...试试类似的东西:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 2016-10-05
      • 2012-04-12
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多