数据库删除和保留问题

有个数据库 大概几十万条数据 每天还会产生几千甚至几万条数据

现在有个需求:在存量的几十万条数据 根据时间排序 每100条数据 删除前99条 保留第100条

请问如何完成?

按照条件循环每次取出100条、然后保存第100条的ID、这样能获取到所有要保存的ID、最后根据条件删除就可以了、如果删除中sql过长、就分批次删除

不确定你机器配置怎么样,如果性能不行,就写过程分批处理;
如果性能比较好,那么直接用row_number对整个数据排个序号,然后 取 round(序号,-2)=序号 的,即为要保留的,同理,round(序号,-2)<>序号 的,即为要删除的。
但是,对于一个大表,要删除大量数据,保留小量数据,更常见的做法是把要保留的数据create table as 一个新表,然后修改表名替换即可,因为delete这个操作开销太大了,应该尽量避免大量的delete