代码之家  ›  专栏  ›  技术社区  ›  Richard H

MySQL-如何创建一个新表,它是两个现有表的主键上的联接

  •  11
  • Richard H  · 技术社区  · 16 年前

    我有两个现有的表,有不同的字段,除了主ID(varchar,而不是int)。我想创建第三个表,它本质上是这两个表的合并,这样对于一个给定的主键,所有字段都在一个表中。

    下一种方法是什么?

    多谢

    4 回复  |  直到 9 年前
        1
  •  1
  •   Bandi-T    16 年前

    如果您确定对于给定的主ID,两个表中都有一行且只有一行,那么这应该可以工作:

    SELECT
        tablea.field1, tablea.field2, tablea.field3, ... tablea.fieldn, <---- field list
        tableb.field1, tableb.field2, tableb.field3, ... tableb.fieldm  <---- field list
    FROM
        tablea, tableb
    WHERE
        tablea.primaryID = tableb.primaryID
    

    如果实际上不需要表A和表B的主ID字段,您可能希望从字段列表中省略它们(在这个查询中,由于 tablea.primaryID = tableb.primaryID 条件)

    对于 VIEW 也。

        2
  •  28
  •   Tushar Gupta - curioustushar    12 年前
    CREATE TABLE result AS 
      (SELECT first.*, 
              second.f1, 
              second.f2, 
              second.f3 
       FROM   first 
              INNER JOIN second 
                      ON first.id = second.id);
    

    要获取视图,请执行相同的操作,但将“table”替换为“view”。如果使用表而不是视图,请确保添加主键,因为默认情况下不会添加主键。

        3
  •  1
  •   Dhrumil Bhankhar    9 年前

    对于MS SQL,请使用此

    SELECT * INTO result 
    FROM  table1
    INNER JOIN table2
    ON table1.id = table2.id
    
        4
  •  -1
  •   TMN    16 年前

    为什么要创建新表?为什么不在需要数据时执行查询呢?如果您只是在主键上加入两个表,那么大部分数据访问时间将花费在将数据编组回应用程序上。你不会在入席前节省很多时间,而且你会吃很多空间。另外,您将瞄准自己的大脚趾,等待第一次更新源表时,忘记运行更新脚本来将更改复制到加入的表中。重复数据是 邪恶的 但有时是必要的。这听起来不像是那种时候。