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

时间:2014-04-18 22:56:23

标签: mysql

我正在尝试通过匹配联系人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

但是我收到错误说"无效使用群组功能"。

有谁知道这样做的方法?

1 个答案:

答案 0 :(得分:0)

您可以先进行聚合:

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);

为了保持这一点,您应该在insert(也可能是callrecordupdate个触发器上设置delete触发器。