假设一个表包含以下列:
pri_id
,item_id
,comment
,date
我想要的是一个SQL查询,它将删除任何记录,对于item_id
比特定日期更早的特定记录,但只要有超过15行的记录item_id
.
这将用于清除项目超过1年的评论记录,但我仍希望在任何给定时间保留至少15条记录.这样,如果我有一个评论10年,它将永远不会被删除,但如果我在过去5天有100条评论,我只保留最新的15条记录.这些当然是本例的任意记录计数和日期时间范围.
我想找到一种非常通用的方法,可以在mysql,oracle,postgres等中使用.我正在使用phps adodb库进行数据库抽象,所以如果可能的话,我希望它可以很好地工作.
这样的事情对你有用:
delete from MyTable where item_id in ( select item_id from MyTable group by item_id having count(item_id) > 15 ) and Date < @tDate