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

最佳答案

您应该使用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;

关于mysql - X周和X计数(根据业务)后,记录标记为删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18034077/

10-16 08:21