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