contentProvider实现groupby查询数据比如要用实现这么一个sql语句:SELEC
2017-06-15 09:14
645 查看
contentProvider实现groupby查询数据比如要用实现这么一个sql语句:SELEC
http://www.educity.cn/wenda/345846.htmlcontentProvider实现groupby查询数据
比如要用实现这么一个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";
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
相关文章推荐
- sql语句实现从一个表的查询出某些数据插入另外一个表中
- 一个SQL语句实现MSSQL转移表数据
- 收藏一个简单sql语句实现多查询的方法
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 一个按年季度查询数据的SQL语句
- 用SQL语句实现随机查询数据并不显示错误数据的方法
- 一个sql语句同时实现两条数据的某个字段值交换
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- SQL语句技巧:查询存在一个表而不在另一个表中的数据记录
- SQL语句实现跨Sql server数据库操作实例 - 查询远程SQL,本地SQL数据库与远程SQL的数据传递
- 给定一个一oracle建表的sql语句,解析读出的字符串,将表名、字段名、字段类型数据取出,怎么实现啊?
- 求助:关于一个查询的SQL语句,请高人指点如何实现,谢谢!
- Sql语句与存储过程查询数据的性能测试实现代码
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 用SQL语句实现随机查询数据并不显示错误数据
- 用SQL语句实现随机查询数据并不显示错误数据的方法
- WMS仓储管理系统实现"收发存日报表"数据查询功能Sql语句--Oracle
- ADO带密码的数据连接、查询一个记录集、执行一SQL语句
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询