繁体   English   中英

SQL查询删除所有早于最后一条的记录

[英]SQL query deleting all records older than the last one

我想在以下情况下创建一个SQL oracle请求:

我有一个表,其中用户名是主键。 该表为每个用户名获取了上次修改日期的一百条记录。

我想删除所有记录,修改日期比最近的记录早1个月,因此对于每个用户名。

我想我可以简单地使用表的两个实例(一个执行删除,一个使用最近的记录执行选择,然后将两个实例加入),但是我对此不确定。

有人有什么主意吗?

谢谢。

根据您的专栏尝试这样

DELETE username 
FROM   tablename 
WHERE  created_date >= To_date(?, 'dd-MON-yyyy HH24:MI:SS') 
       AND created_date <= To_date(?, 'dd-MON-yyyy HH24:MI:SS') 

找出内部查询中每个user_name的最后修改日期(在下面的查询中以别名i表示),并删除具有last_modification_date的该用户的最后一行至少30天。

Delete from tablename o
where o.last_modification_date + 30 < (select max(i.last_modification_date) 
from tablename i
where i.user_name = o.user_name)

仅当last_modification_date的数据类型为datedatetime等时,此查询才有效。

要删除所有具有相同用户名的记录,并且修改日期超过一个月后的所有记录,请使用:

delete from my_table t1
where exists (select null
                from my_table t2
               where t2.username          = t1.username and
                     t2.modification_date > add_months(t1.modification_date,1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM