Mysql 将最新时间戳从一个表复制到另一个表

Mysql 将最新时间戳从一个表复制到另一个表,mysql,Mysql,我试图通过匹配联系人ID将最新的时间戳从一个表中的行复制到另一个表中。基本上,我有一个呼叫记录表,我想在我的联系人表中添加一列,该列将包含该联系人最近一次呼叫的时间戳。相关栏目包括: contact.leadId=>callrecord.cid,contact.lastcall=>callrecord.time 这是一种一对多关系,因为每个联系人只有一行,但是callrecord表可能有许多行用于该联系人 我试过这个: UPDATE contact JOIN callrecord ON con

我试图通过匹配联系人ID将最新的时间戳从一个表中的行复制到另一个表中。基本上,我有一个呼叫记录表,我想在我的联系人表中添加一列,该列将包含该联系人最近一次呼叫的时间戳。相关栏目包括:

contact.leadId=>callrecord.cid,contact.lastcall=>callrecord.time

这是一种一对多关系,因为每个联系人只有一行,但是callrecord表可能有许多行用于该联系人

我试过这个:

UPDATE contact 
JOIN callrecord ON contact.leadId = callrecord.cid 
SET contact.lastcall = MAX(callrecord.time) 
WHERE 1
但我得到一个错误,说“无效使用组函数”


有人知道这样做的方法吗?

您可以先进行聚合:

UPDATE contact c JOIN
       (select cid, MAX(cr.time) as maxtime
        from callrecord
        group by cid
       ) cr
       ON c.leadId = cr.cid 
  SET c.lastcall = MAX(cr.time) ;
callrecord(cid,time)
上有一个索引,下面的操作应该会更好:

UPDATE contact c
    SET c.lastcall = (SELECT MAX(time) FROM callrecord cr WHERE c.leadId = cr.cid);
不过,为了保持这一点,您应该在
callrecord
上有一个
insert
触发器(可能还有
update
delete
触发器)