Ani*_*nil 1 mysql select insert
我试图将一些数据从一个表复制到另一个表,其中电子邮件地址是相同的.
例如:
表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'
Run Code Online (Sandbox Code Playgroud)
所以基本上,我在一个声明中需要这样的东西..
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`
Run Code Online (Sandbox Code Playgroud)
编辑 - 我想,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
Run Code Online (Sandbox Code Playgroud)
查询记录的最新条件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
Run Code Online (Sandbox Code Playgroud)