[英]how do I update table1 values (select from table2) where table1.email = table2.email
我試圖將一些數據從一個表復制到另一個電子郵件地址相同的表。
例如:
表1包含以下字段:
email, title, first_name, last_name, (+ others)
表2具有以下字段:
email, title, first_name, last_name, modified, (+ others)
我要復制的title
, first_name
, last_name
從table2
到table1
,其中table1.email = table2.email
。
因此, table2
保存所有的數據,我想復制到table1
,其中在電子郵件table1
的匹配FIRST 'most recent (by 'modified')' email found
在table2
(因此最近修改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
新記錄。
試試這個查詢-
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.