Gau*_*ora 23 sql sqlite android android-sqlite
我在我的Android应用程序中保存了一个数据库,并希望检索插入数据库的最后10条消息.
我用的时候:
Select * from tblmessage DESC limit 10;
Run Code Online (Sandbox Code Playgroud)
它给了我10条消息,但来自TOP.但我想要最后 10条消息.可能吗?
假设整个表数据是 -
1,2,3,4,5....30
Run Code Online (Sandbox Code Playgroud)
我写了查询 select * from tblmessage where timestamp desc limit 10
表明 30,29,28...21
但我希望序列为 - 21,22,23...30
Mic*_*lon 38
将DESC更改为ASC,您将获得所需的记录,但如果您需要它们,则需要反转它们的顺序.您可以在自己的代码中执行此操作,也可以像查询一样扩展查询所以:
select * from (select * from tblmessage order by sortfield ASC limit 10) order by sortfield DESC;
Run Code Online (Sandbox Code Playgroud)
你真的应该总是指定order by子句,而不仅仅是ASC或DESC.
McP*_*ppr 29
在大型数据库上,该ORDER BY DESC
语句可能会减慢系统速度,例如raspberry pi.一个很好的避免方法ORDER BY
是OFFSET
命令.你甚至保留了存储的订单:
SELECT * FROM mytable LIMIT 10 OFFSET (SELECT COUNT(*) FROM mytable)-10;
Run Code Online (Sandbox Code Playgroud)
请参阅:http://www.sqlite.org/lang_select.html
查看您的表现:
.timer ON
Run Code Online (Sandbox Code Playgroud)
答案略有改善:
select * from (select * from tblmessage order by sortfield DESC limit 10) order by sortfield ASC;
Run Code Online (Sandbox Code Playgroud)
Michael Dillon在他的回答中有正确的想法,但是这个例子给出了前几行,倒序:
select * ... (select * ... ASC limit 10) ... DESC
Run Code Online (Sandbox Code Playgroud)
他想要最后一个,应该是:
select * ... (select * ... DESC limit 10) ... ASC
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36811 次 |
最近记录: |