在我的应用程序中,我有两个表:一个用于跟踪记录,另一个用于跟踪某些页面上的单个页面浏览量。每个页面查看事件都会触发一条记录写入我的 Views 表。
为了计算统计数据,我有一个 cron 作业,我试图聚合这些视图的计数,按 record_id 分组并将它们保存到单独的表中。
如果我运行以下插入查询,效果很好。
insert into Details (record_id, views)
(select record_id, count(id) from Views where 1 group by record_id)
不幸的是,这仅适用于插入,而且我很难提出正确的插入/更新查询。我试过使用On Duplicate Key Update
,但我似乎无法弄清楚如何让它与我现有的查询一起工作。我希望避免替代方案,如果可能的话,我会在 PHP 中编写脚本并运行一堆单独的查询。
这是我的表定义:
Views
id (int) PK
record_id (int)
created_at (date)
Details
record_id (int) PK
views (int)
注意:另外,在未来,我计划在 Details 表中添加更多列来表示其他统计信息,因此运行 Truncate 并重新运行上面的原始插入查询并不是真正可行的解决方案。