Android SQLite Query - Getting latest 10 records

后端 未结 9 863
死守一世寂寞
死守一世寂寞 2020-12-05 04:56

I have a database saved in my Android application and want to retrieve the last 10 messages inserted into the DB.

When I use:

Select * from tblmessag         


        
相关标签:
9条回答
  • 2020-12-05 05:34

    If your table contains a column with primary key autoincrement (some "row_id" for example) then you just need single select with DESC order by this column

    Raw request looks like

    select * from table_name order by row_id DESC limit 10
    

    Android implementation is

    private Cursor queryLastEvents() {
        return getDatabase().query("table_name", null, null, null, null, null, "row_id DESC", "10");
    }
    
    0 讨论(0)
  • 2020-12-05 05:34
    select * from
    (select * from table_name order by yourfield ASC limit 10)
    order by yourfield DESC;
    

    You cannot have better solutions than this.

    0 讨论(0)
  • 2020-12-05 05:39

    on large databases, the ORDER BY DESC statement really might slow down the system, e.g. raspberry pi. A nice approach to avoid ORDER BY is the OFFSET command. And you even keep the stored order:

    SELECT * FROM mytable LIMIT 10 OFFSET (SELECT COUNT(*) FROM mytable)-10;
    

    see: http://www.sqlite.org/lang_select.html

    check out your performance with:

    .timer ON
    
    0 讨论(0)
提交回复
热议问题