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