2012-12-12 125 views
1

请有人可以帮助我,我有一个用户表和另一个带有用户和日期时间表(这是一个日志文件,每个用户有多个日期)。我需要从日志表中获取最近的日期,并将其插入到同一用户旁边的第一个表中。INSERT INTO SELECT WHERE col = col

这是我有,但它不工作:

INSERT INTO tb1 n (DT) 
SELECT w.DT 
FROM tb2 w 
WHERE w.User = n.User 
ORDER BY w.DT DESC 
limit 1 
+0

“*插入到第一个表*”没有任何意义。你是否真的想将INSERT插入到users表中?“* next next to same user *” –

+0

?或更新会很好?因为我认为你不想在第一个(用户)表中有重复的用户。只想更新该表的max_date列。对? –

回答

3

你不需要,因为已经有出现在你的表中的记录在这里使用INSERT声明。而是UPDATE它与JOIN

UPDATE tb1 a 
     INNER JOIN 
     (
      SELECT user, MAX(DT) maxDT 
      FROM tb2 
      GROUP by user 
     ) b ON a.user = b.user 
SET  a.DT = b.maxDT