记录标记在X周后删除,X根据业务计算

时间:2013-08-03 14:50:42

标签: mysql

我在编写(我认为是)复杂查询时遇到了麻烦。我有一个录音表,可以保存我网站上的所有活动录音。我希望在标记为“标记为删除”之前保留给定X周的录音。此外,我只想为特定的“recs_bus_id”或商家存储X个记录。在标记为删除之前,每个企业只允许有一个帐户的X个记录,并且还更新了recs_mark_deletion_time的时间戳

这是我的问题,我不知道如何在不做大量查询的情况下做到这一点

录音

recs_id  |  recs_insert_time | recs_title | recs_bus_id | recs_mark_deletion_time | recs_mark_deletion

企业

bus_id | bus_rec_save_weeks | bus_max_rec_save_count
  • bus_max_rec_save_count是允许业务保存的录音总数

现在我这样做是为了让录音标记为删除

SELECT * FROM recordings JOIN businesses ON Recording.recs_bus_id = Business.bus_id AND Recording.recs_insert_time < NOW() - INTERVAL Business.bus_rec_save_weeks WEEK
  • 然后我循环遍历结果集并删除每个删除标记

我不知道如何根据“bus_id”获取顶部“bus_max_rec_save_count”之外的记录的结果集以标记删除。

1 个答案:

答案 0 :(得分:1)

您应该使用update来更新标记:

update recordings JOIN
       businesses
       ON Recording.recs_bus_id = Business.bus_id AND
          Recording.recs_insert_time < NOW() - INTERVAL Business.bus_rec_save_weeks WEEK
  set recordins.MarkForDeletion = 1;