2013-05-31 107 views
1

我试图从一个表中复制一些数据到另一个电子邮件地址相同的数据。如何更新table1值(从表2中选择)where table1.email = table2.email

例如:

表1具有字段:
email, title, first_name, last_name, (+ others)

表2具有字段:
email, title, first_name, last_name, modified, (+ others)

我要复制的titlefirst_namelast_nametable2table1其中table1.email = table2.email

所以table2保存所有的数据,我想复制到table1其中table1电子邮件匹配table2FIRST 'most recent (by 'modified')' email found(因此最近修改datetime)。

我是想这样的事情:

INSERT INTO `table1` (title, first_name, last_name) 
    SELECT title, first_name, last_name from `table2` 
    WHERE table1.email = table2.email 

ERROR: Unknown column 'table1.email' in 'where clause' 

所以基本上,我需要在一个声明中这样的事情..

SELECT EMAIL as `originalEmail` FROM `table1` 
    SELECT title, first_name, last_name FROM `table2` 
    WHERE table2.email = table1.email 
    ORDER BY `modified` desC# Get the most recently modified 
    LIMIT 1     # limit to 1 result (the most recent one) 
UPDATE `table1` (title, first_name, last_name) values (*values from above*) 
WHERE EMAIL = `originalEmail` 

编辑 - 我想UPDATE和不是INSERT的新纪录。

+0

也许你需要更新? – Devart

+0

你想更新实际值还是插入新值? – GMZ

+0

为什么你会在'where子句'中得到'ERROR:未知列'table1.email'?'在table1中有email列吗? – RAS

回答

5

尝试此查询 -

UPDATE `table1` t1 
    JOIN `table2` t2 
    ON t1.email = t2.email 
SET 
    t1.title = t2.title, 
    t1.first_name = t2.first_name, 
    t1.last_name = t2.last_name 

查询与最近条件table2记录 -

UPDATE `table1` t1 
    JOIN (SELECT * FROM `table2` GROUP BY email ORDER BY modified DESC) t2 
    ON t1.email = t2.email 
SET 
    t1.title = t2.title, 
    t1.first_name = t2.first_name, 
    t1.last_name = t2.last_name 
+1

最后修改的电子邮件状态在哪里? – RAS

+0

@RAS我会尽快添加新的查询。 – Devart

+0

第二个查询查找最近的数据。试试吧。 – Devart

相关问题