一尘不染

sql语句删除存在早于XXX的记录(只要有YY行以上)

sql

假设一个表包含以下列:

pri_iditem_idcommentdate

我想要的是一个SQL查询,该查询将删除任何记录,对于特定item_id于早于给定日期的记录,但前提是该记录的行数超过15 item_id

这将用于清除项目的1年以上的注释记录,但我仍然希望在任何给定时间至少保留15条记录。这样,如果我有10年的评论,它将永远不会被删除,但是如果在过去5天中有100条评论,我只会保留最新的15条记录。对于本示例,这些当然是任意记录计数和日期时间范围。

我想找到一种可以在mysql,oracle,postgres等环境中正常工作的通用方法。我正在使用phps
adodb库进行数据库抽象,因此,我希望它可以与之一起很好地工作。


阅读 129

收藏
2021-05-23

共1个答案

一尘不染

这样的事情应该为您工作:

delete
from
  MyTable
where
  item_id in
  (
    select
      item_id
    from
      MyTable
    group by
      item_id
    having
      count(item_id) > 15
  )
  and
    Date < @tDate
2021-05-23