android contentProvider group by查询数据
2013-01-16 14:53
423 查看
比如要用实现这么一个sql语句:
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls GROUP BY number,type,date/8640000
ORDER BY date DESC
这个在一般的SQL编译工具里都能正常运行,在ContentRosolver中有些不一样。
用ContentRosolver中的query这么写:
private static String CALLS_COUNT = "calls_count";
static final String[] CALL_LOG_PROJECTION = new String[] {
Calls._ID,
Calls.NUMBER,
Calls.DATE,
Calls.DURATION,
Calls.TYPE,
Calls.CACHED_NAME,
Calls.CACHED_NUMBER_TYPE,
Calls.CACHED_NUMBER_LABEL,
"COUNT(*) AS " + CALLS_COUNT
};
String selection = "0==0)
GROUP BY ("+
Calls.NUMBER+"),("+
Calls.TYPE+"),("+
Calls.DATE+"/86400000";
//这里没有左边括号"("和右边括号")"
程序会自己添加.
//0==0
一个=号和2个等于都可以.
rosolver.query(QUERY_TOKEN, null, Calls.CONTENT_URI,
CALL_LOG_PROJECTION, selection, null, Calls.DEFAULT_SORT_ORDER);
注意事项:
1 关键字“COUNT, AS, GROUP BY”的大小写
2 COUNT(*) 后需要跟AS ***
3 Android会将query中的参数整合成一条sql语句,其中会将selection的字符串自动加一个括号,形成 “WHERE
(*******)”的形式,所以要特别注意selection中有括号的情况
4 GROUP BY后面的字段应该加括号,用逗号隔开。
转化为sql语句正确的形式应该如下:
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls WHERE (0==0) GROUP BY
(number),(type),(date/8640000) ORDER BY date DESC
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls GROUP BY number,type,date/8640000
ORDER BY date DESC
这个在一般的SQL编译工具里都能正常运行,在ContentRosolver中有些不一样。
用ContentRosolver中的query这么写:
private static String CALLS_COUNT = "calls_count";
static final String[] CALL_LOG_PROJECTION = new String[] {
Calls._ID,
Calls.NUMBER,
Calls.DATE,
Calls.DURATION,
Calls.TYPE,
Calls.CACHED_NAME,
Calls.CACHED_NUMBER_TYPE,
Calls.CACHED_NUMBER_LABEL,
"COUNT(*) AS " + CALLS_COUNT
};
String selection = "0==0)
GROUP BY ("+
Calls.NUMBER+"),("+
Calls.TYPE+"),("+
Calls.DATE+"/86400000";
//这里没有左边括号"("和右边括号")"
程序会自己添加.
//0==0
一个=号和2个等于都可以.
rosolver.query(QUERY_TOKEN, null, Calls.CONTENT_URI,
CALL_LOG_PROJECTION, selection, null, Calls.DEFAULT_SORT_ORDER);
注意事项:
1 关键字“COUNT, AS, GROUP BY”的大小写
2 COUNT(*) 后需要跟AS ***
3 Android会将query中的参数整合成一条sql语句,其中会将selection的字符串自动加一个括号,形成 “WHERE
(*******)”的形式,所以要特别注意selection中有括号的情况
4 GROUP BY后面的字段应该加括号,用逗号隔开。
转化为sql语句正确的形式应该如下:
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls WHERE (0==0) GROUP BY
(number),(type),(date/8640000) ORDER BY date DESC
相关文章推荐
- Android之ContentProvider跨程序共享数据入门(笔记二)
- MYSQL基本查询语句练习2--GROUP BY HAVING COUNT 查找分数表中一个学生同一课程有两条数据
- Android数据存储之ContentProvider&Preferences
- Android数据存储之ContentProvider基本原理
- Android开发教程之ContentProvider数据存储
- android数据存储之ContentProvider
- android 编写content_provider对外共享数据
- android 编写content_provider对外共享数据
- Django的objects查询数据实现group_by功能,绕开自己挖的坑
- android 编写content_provider对外共享数据
- android异步查询 sqlitehelper contentprovider loader
- oralce 取前几条数据 分页查询 左右内外连接 order by group by
- MongoDB group by max 分组查询组内最大的数据,并获取相应的数据
- Android之ContentProvider跨程序共享数据入门(笔记一)
- Android之ContentProvider数据存储
- android ContentProvider结合SQLiteHelper实现数据的共享<一>
- Android Content Provider在应用程序之间共享数据的原理分析
- Android监听数据表(ContentObserver)
- 【资源NotFoundException美元:# 0 x55字符串资源】Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x55
- Android应用开发揭秘的第3个程序3_2_Content_Provider修改版和高仿版的源码注释