我在编写(我认为是)复杂查询时遇到了麻烦。我有一个录音表,可以保存我网站上的所有活动录音。我希望在标记为“标记为删除”之前保留给定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
现在我这样做是为了让录音标记为删除
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”之外的记录的结果集以标记删除。
答案 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;