假设一个表包含以下列:
pri_id,item_id,comment,date
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