方式一:
DELETE from t_send_log WHERE id IN (SELECT * from (SELECT id from t_send_log where _rowid >10000 ORDER BY visit_time DESC ) x )
__________________________________________________________________
方式一不好用的话用方式二:
DELETE from t_interactive_log WHERE id not IN (SELECT * from (SELECT id from t_interactive_log ORDER BY visit_time DESC limit 10000) x )
方式二的体现
if (countInterActiveLog > (Integer.valueOf(ConstantEnum.LOG_COUNT.getValue()).intValue())) { String deleteSqlForInteractiveLog = "DELETE from t_interactive_log WHERE id not IN (SELECT * from (SELECT id from t_interactive_log ORDER BY visit_time DESC limit " + ConstantEnum.LOG_COUNT.getValue() + ") x )";//保留最新50000条接收日志 sqlMapper.delete(deleteSqlForInteractiveLog); }
__________________________________________________________________
方式三
interactiveLogMapper.deleteBeforeDays(365);//保留近365日接收日志
<delete id="deleteBeforeDays" > DELETE FROM t_interactive_log WHERE t_interactive_log.id IN ( SELECT x.id FROM ( SELECT id FROM t_interactive_log WHERE visit_time <![CDATA[<=]]> DATE_SUB(CURDATE(), INTERVAL #{dayNumber,jdbcType=INTEGER} DAY) ORDER BY visit_time DESC ) x ) </delete>