【问题标题】:Mysql merge w tables with common columnMysql将w表与公共列合并
【发布时间】:2014-11-11 16:02:27
【问题描述】:

我有:

表1:

标识 |姓名

表2:

标识 |金额

我想根据公共 ID 创建一个新表。因此,如果 table1 和 table2 中的记录具有匹配的 id,则:

表3

标识 |姓名 |金额

对不起,如果以前有人问过这个问题。我是新手,只想完成这项工作

【问题讨论】:

    标签: mysql merge


    【解决方案1】:

    您为什么不用简单的 select 语句来做到这一点?

    选择 a.id、a.Name、b.Amount
    FROM table1 a, table2 b
    WHERE a.id = b.id

    【讨论】:

      【解决方案2】:

      尝试使用 JOIN

      SELECT table1.id, table1.name, table2.amount
      FROM table1
      LEFT JOIN table2
      ON table1.id=table2.id;
      

      我没有对此进行测试,但我认为它应该可以工作。

      http://www.w3schools.com/sql/sql_join_left.asp

      【讨论】:

        【解决方案3】:

        像这样:

        CREATE TABLE tavle_xxx(
        id xxx,
        name xxx,
        amount xxx
        );
        
        INSERT IGNORE INTO tavle_xxx
        SELECT t1.id, t1.name, t2.Amount
        FROM table1 t1, table2 t2
        WHERE t1.id=t2.id;
        

        【讨论】:

          【解决方案4】:

          更新:

          我想根据公共列“id”合并表,而不是创建第三个表。只需添加“名称列”并将其填充到 id 所在的位置 =

          所以我有:

          表1:

          Id | Name
          

          表2:

          Id | Amount
          

          我希望结果是

          表2

          标识 |金额 |名称

          【讨论】:

            【解决方案5】:

            如果要合并table2中table1的Name列,使用公共列Id,可以通过运行:

            ALTER TABLE table1 ADD Name <dataTypeOfName>;
            UPDATE table1, table2 SET table2.Name = table1.Name WHERE table1.Id = table2.Id;
            

            这将在 table2 中创建一个名为 Name 的新列,然后在基于列 Id 执行连接之后使用 table1 中的值填充它。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-05-06
              • 1970-01-01
              • 2012-12-05
              • 1970-01-01
              • 2019-11-29
              • 1970-01-01
              • 1970-01-01
              • 2012-08-16
              相关资源
              最近更新 更多