【问题标题】:Getting the 10 latest entries in SQL获取 SQL 中的 10 个最新条目
【发布时间】: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 个条目)。查看我上面提供的教程 - 那里解释了如何处理查询结果。

标签: java android sqlite


【解决方案1】:

我找到了一个简单易行的解决方案:

"SELECT " + sql + " FROM " + TABLE_NAME + " ORDER BY _id DESC LIMIT 1 offset n"

其中 n 是条目 -1 的编号。意思是,我想要第 6 行,n 必须是 5。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多