我正在尝试在我的sqlite数据库中获取十个最新条目。我需要一次只获取一个条目,而不是一次只获取这10个条目。
到现在为止,我这样做了:
"SELECT " + sql + " FROM " + TABLE_NAME
+ " WHERE _id = (SELECT max(_id)-2 FROM " + TABLE_NAME + ")";
对于我需要的每个条目,我只是在做...max(_id)-x
,但如果某些条目在某个时间被删除,则不起作用。 id有一些空白(比如1,2,4,8 ......)。
经过一些研究后我尝试了这样的事情:
"SELECT * FROM (SELECT " + sql + ", rank() over (order by max(_id) desc) rk
FROM " + TABLE_NAME + " GROUP BY " + sql + ") t WHERE rk = 2"
然而,这种方法会崩溃并显示以下消息
android.database.sqlite.SQLiteException: near "(": syntax error (code 1): , while compiling: select * from (select price, rank() over (order by max(_id) desc) rk from refuels group by price) t where rk = 2
我怎样才能完成这项工作?提前致谢
答案 0 :(得分:0)
我找到了一个简单易用的解决方案:
"SELECT " + sql + " FROM " + TABLE_NAME + " ORDER BY _id DESC LIMIT 1 offset n"
其中n是条目-1的编号。意思是,我想要第6行,n必须是5。