SQL查询语句中的 limit offset(转 )

经常用到在数据库中查询中间几条数据的需求

比如下面的sql语句:

① selete * from testtable limit 2,1;

② selete * from testtable limit 2 offset 1;

注意:

1.数据库数据计算是从0开始的

2.offset X是跳过X个数据,limit Y是选取Y个数据

3.limit  X,Y  中X表示跳过X个数据,读取Y个数据

这两个都是能完成需要,但是他们之间是有区别的:

①是从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过

②是从数据库中的第二条数据开始查询两条数据,即第二条和第三条。

 

 

----------------------------------------------华丽的分割线----------------------------------------------

以下内容与标题无关

转载:

参考文献1.Android操作嵌入式关系型SQLite数据库

参考文献2.Android采用ListView实现数据列表显示

在学习ListView实现数据列表显示时,需要用到参考文献1的源代码,但是源代码中少了一个getScrollData函数,在此补充一下

 1         /**
 2          * 分页获取记录
 3          * @param offset 跳过前面多少条记录
 4          * @param maxResult 每页获取多少条记录
 5          * @return
 6          */
 7         //该函数有用到 limit offset可以复习一下
 8         public List<Person> getScrollData(int offset, int maxResult){
 9             List<Person> persons = new ArrayList<Person>();
10             SQLiteDatabase db = dbservice.getReadableDatabase();
11             Cursor cursor = db.rawQuery("select * from person order by id asc limit ?,?",
12                     new String[]{String.valueOf(offset), String.valueOf(maxResult)});
13             while(cursor.moveToNext()){
14                 int id = cursor.getInt(cursor.getColumnIndex("id"));
15                 int age = cursor.getInt(cursor.getColumnIndex("age"));
16                 String name = cursor.getString(cursor.getColumnIndex("name"));
17                 //下面这种也可以获得参数
18                 /*Integer id = cursor.getInt(0);  
19                         String name = cursor.getString(1);   
20                         Integer age = cursor.getInt(2);  */
21                 persons.add(new Person(id, name, age));
22             }
23             cursor.close();
24             return persons;
25         }        

 

posted @ 2016-09-23 10:15  海天依色  阅读(13641)  评论(0编辑  收藏  举报