当前位置: 代码迷 >> 其他数据库 >> SQLite3 剔除按时间排序删除前几行
  详细解决方案

SQLite3 剔除按时间排序删除前几行

热度:171   发布时间:2016-05-05 08:16:14.0
SQLite3 删除按时间排序删除前几行
计划用SQLite作缓存数据库。
现在能实现,按时间排序后取出前N条记录,
如,取出前3条记录的sql:select * from CACHEYX order by TIME desc limit 0,3

想取出后就把这些记录删除掉,请教下大神sql该咋写??

数据库的时间有可能有重复的,比如那个查询,同一个时间的可能有四个,我取了三个,就把这三条删除,另外一条不能删除的,所以  sql:delete from tt where 排序的字段 in (select 排序的字段 from tt order by 排序的字段 limit 0,n-1),有问题。
在线等答复,谢谢了。
------解决思路----------------------
假设主键为 ID

delete from CACHEYX where id in(select id from CACHEYX order by TIME desc limit 0,3)

未测试自己试一下吧。
------解决思路----------------------
sqlite> select * from COMPANY ORDER BY SALARY DESC LIMIT 2;
ID          NAME        AGE         ADDRESS     SALARY      id1       
----------  ----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000       1         
3           Teddy       23          Norway      20000       1         
sqlite> 
sqlite> 
sqlite> DELETE FROM COMPANY WHERE ID IN( SELECT ID FROM COMPANY  c1  ORDER BY SALARY DESC LIMIT 2);
sqlite> select * from COMPANY ORDER BY SALARY DESC LIMIT 2;
ID          NAME        AGE         ADDRESS     SALARY      id1       
----------  ----------  ----------  ----------  ----------  ----------
7           James       28          Houston     20000       1         
2           Allen       25          Texas       15000       1         
sqlite>