2013-05-31 104 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

相關問題