近日研究通话记录 查询数据去重,一直在研究 getContentResolver().query这个方法,对其中的几个参数也小研究了一下。
找到了通话记录去重的办法。 如果只取一列数据可以用distinct(number) as distinct_number ,
Cursor mCallLogCursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, --------------URI
"1=1) group by(number", ----------------SELECTION
null, -----------------SELECTIONARG
CallLog.Calls.DEFAULT_SORT_ORDER);----------------SORTORDER
上面的语句还原成SQL语句,如下句所示。
SELECT max(date) as max_date, number, duration,type FROM calls WHERE (1=1) group by(number) ORDER BY date DESC
实现了通话记录的去重和查询的功能(去重是把时间靠前的通话记录去掉)
个人理解SQL语句执行,是SELECT 数据 从 表的grop里选出max的数据。