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 }