[英]mysql update multiple rows based on select, based on current row value
我想基于另一个称为sessions
表的count()
每小时更新一次表visitors
。
我到目前为止的代码:
UPDATE visitors
INNER JOIN sessions
on visitors.visitor_ID = sessions.visitor_ID
SET visitors.last_30_day_sessions = (select count(sessions.session_ID)
where sessions.session_timestamp >= NOW() - INTERVAL 30 DAY)
它似乎正在做某事,但是当我简单地检查访问者在过去30天内实际进行的会话次数时,数字却不匹配。
使用相关查询:
UPDATE visitors
SET last_30_day_sessions = ( SELECT count(session_ID)
FROM sessions
WHERE visitors.visitor_ID = sessions.visitor_ID
AND sessions.session_timestamp >= NOW() - INTERVAL 30 DAY
)
作为奖励,如果您想使用加入,则需要先计算总数
UPDATE visitors V
JOIN (SELECT visitor_ID, count(session_ID) session_count
FROM sessions
WHERE session_timestamp >= NOW() - INTERVAL 30 DAY
GROUP BY visitor_ID
) s
ON v.visitor_ID = s.visitor_ID
SET v.last_30_day_sessions = s.session_count
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.