【问题标题】:MySQL Insert Data into Table1 when a matching record is found in Table2MySQL 在 Table2 中找到匹配记录时将数据插入 Table1
【发布时间】:2012-01-30 03:07:25
【问题描述】:

我有两个表 data1 和 data2。 Data1 包含 2 列,emailaddress 和 name,但 name 列是空的。

emailaddress    name
email1
email2
email3

Data2 Contains 还包含 2 列,emailaddress 和 name,并且条目比 data1 多

email address   name
email1          name1
email1b         name1b
email2          name2
email2b         name2b
email3          name3
email3b         name3b

我正在尝试编写一个 SQL 查询来比较 Data1 和 Data2 中的电子邮件地址列,当它找到匹配项时,将 Data2 中的关联名称插入到 data1 的相应名称字段中。

运行查询后,Data1 应如下所示

emailaddress    name
email1          name1
email2          name2
email3          name3

我似乎无法弄清楚如何做到这一点。非常感谢任何帮助。

【问题讨论】:

    标签: mysql database merge


    【解决方案1】:

    试试这个:

    UPDATE data1 a, Data2 b
    SET a.name= b.name
    WHERE a.emailaddress = b.emailaddress
    

    【讨论】:

    • 这正是我要输入的内容。
    • @nolt2232 完美!这效果很好。谢谢您的帮助。最后一件事,“a”和“b”到底是做什么的?这些是变量吗?
    • 它们只是表名的别名。只是一个快捷方式,因此您可以键入“a”,而不必在任何地方键入“Data1”。
    【解决方案2】:

    试试这个

    this only 显示连接表的结果。

    SELECT a.emailaddress,
           b.name
    FROM   Data1 a INNER JOIN Data2 b 
                   ON a.EmailAddress = b.emailaddress
    

    更新

    此查询更新 Data1 表。

        UPDATE a 
        SET  a.name = b.name
        FROM Data1 a INNER JOIN Data2 b 
                   ON a.EmailAddress = b.emailaddress
    

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多