我有一个 MySQL 表department_members
,其中包含单个部门中每个人的字符串字段 ( member_name
) 和 int 字段 ( ) 的行。当前对所有行都为 NULL。recent_actions
Recent_actions
我有另一个更大的表company_actions
,其中包含整个公司中的某个人在过去一年中每次执行此类操作时的一行。每行都有一个member_name, timestamp,
和一个唯一的action_id
。
我想更新department_members.recent_actions
该成员在过去两周内执行该类型操作的次数。如果他们最近没有执行任何操作,我想department_members.recent_actions
用 0 更新。
我尝试了各种 CASE 和 IF 方法,但我无法正确使用语法。
在伪代码中,这就是我想要做的:
UPDATE department_members AS d,
(SELECT COUNT(action_id) AS recent, member_name
FROM company_actions
WHERE timestamp > DATE_SUB(NOW(), INTERVAL 14 DAY) AS tmp
/* then do something like this, only for real: */
IF d.member_name IN tmp(member_names) THEN d.recent_actions = tmp.recent
WHERE d.member_name = tmp.member_name
ELSE IF d.member_name NOT IN tmp(member_names) THEN d.recent_actions = 0
希望这能理解我的目标吗?任何帮助,将不胜感激!整天都在努力解决这个问题。