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

Ric*_*d H 12 mysql merge join create-table

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

这样做的原因是什么?

非常感谢

Max*_*keh 29

CREATE TABLE result AS 
  (SELECT first.*, 
          second.f1, 
          second.f2, 
          second.f3 
   FROM   first 
          INNER JOIN second 
                  ON first.id = second.id);
Run Code Online (Sandbox Code Playgroud)

要获得视图,请执行相同操作,但将"TABLE"替换为"VIEW".如果您使用表而不是视图,请确保添加主键,因为默认情况下不会添加主键.


Ban*_*i-T 3

如果您确定对于给定的主 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
Run Code Online (Sandbox Code Playgroud)

如果您实际上不需要 tablea 和 tableb 的主 ID 字段,您可能希望从字段列表中省略它们(在此查询中,由于条件原因,两者将包含相同的值tablea.primaryID = tableb.primaryID)。

a 的语法VIEW也相对相似。