【发布时间】:2013-12-26 01:51:56
【问题描述】:
我正在尝试获取我的 sqlite 数据库中的十个最新条目。我一次只需要获取一个条目,而不是一次获取这十个条目。
直到现在,我都在这样做:
"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
我怎样才能完成这项工作?提前致谢
【问题讨论】:
-
您是否在此处查看过此内容:stackoverflow.com/questions/14018394/…?
-
@Ben 好吧,但是我如何从十个条目中选择一个?
-
如何挑选一个是什么意思? vogella.com/articles/AndroidSQLite/article.html 是一个不错的 sqlite 教程
-
当我在那个答案中查询时,我不会返回所有十个最新条目吗?我需要从十个条目中选择一个。
-
是的,您的结果将是 10 个结果(如果您的表中至少存在 10 个条目)。查看我上面提供的教程 - 那里解释了如何处理查询结果。