2012-01-30 44 views
0

我有两个表data1和data2。 Data1包含2列,emailaddress和name,但名称列是空的。MySQL在表2中找到匹配记录时将数据插入到表1中

emailaddress name 
email1 
email2 
email3 

数据2包含还包含2列,EMAILADDRESS和名称,并且比数据1多个条目

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

我想写的电子邮件地址栏从数据1和数据2进行比较的SQL查询,并且当它找到匹配项时,来自Data2的关联名称将被插入到data1的相应名称字段中。

数据1就应该是这样的查询已运行

emailaddress name 
email1   name1 
email2   name2 
email3   name3 

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

回答

1

试试这个:

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

这正是我正要输入。 – 2012-01-30 03:51:08

+0

@ nolt2232 完美!这很好。感谢您的帮助。 但最后一件事,'a'和'b'到底做了什么?这些变量是? – user1177227 2012-01-30 04:01:35

+0

它们只是表名的别名。只是一个快捷方式,您可以输入“a”而不必在任何地方输入“Data1”。 – nolt2232 2012-01-30 04:05:24

0

试试这个

这只显示连接表的结果。

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

UPDATE

此查询更新数据1表。

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