0

我在编写(我认为是)一个复杂的查询时遇到了麻烦。我有一个记录表,其中包含我网站上的所有活动记录。我希望在记录被标记为“标记为删除”之前将记录保留 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”之外的记录的结果集以标记删除。

4

1 回答 1

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;
于 2013-08-03T15:01:00.987 回答