当前位置:  开发笔记 > 编程语言 > 正文

sql语句删除早于XXX的记录,只要有超过YY行

如何解决《sql语句删除早于XXX的记录,只要有超过YY行》经验,为你挑选了1个好方法。

假设一个表包含以下列:

pri_id,item_id,comment,date

我想要的是一个SQL查询,它将删除任何记录,对于item_id比特定日期更早的特定记录,但只要有超过15行的记录item_id.

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

我想找到一种非常通用的方法,可以在mysql,oracle,postgres等中使用.我正在使用phps adodb库进行数据库抽象,所以如果可能的话,我希望它可以很好地工作.



1> Robert C. Ba..:

这样的事情对你有用:

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

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有