计划用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>