我有一个指向内容的网址,我需要获得其中一列中包含的最高价值。是否有任何聚合函数可以实现,或者我必须手动执行此操作?
答案 0 :(得分:19)
如果您要查询Android内容提供商,则可以通过将MAX(COLUMN_NAME)
传递到ContentResolver.query
的选择参数来实现此目的:
getContentResolver().query(uri, projection, "MAX(COLUMN_NAME)", null, sortOrder);
其中Uri是内容提供商的地址。这应返回COLUMN_NAME中值最高的单行。
答案 1 :(得分:1)
Android的数据库使用SQLite,因此SELECT MAX(thecolumn) FROM TheTable
应该可以工作,就像在任何其他SQLite实现中一样(或者就任何其他SQL而言,“迭代”或不是;-)。 (如果您没有使用android.database
,则最好指定您正在使用的; - )。
答案 2 :(得分:1)
对我有用的。
基于@Reto Meier和@Florian von Stosch的回复。
public static long getMaxId(Context context) {
long maxId = 0;
Cursor maxCursor = context.getContentResolver().query(
ProviderContentContract.CONTENT_URI,
new String[]{"MAX(" + Table._ID + ")"},
null,
null,
null);
if (maxCursor != null && maxCursor.moveToFirst()) {
maxId = maxCursor.getInt(0);
maxCursor.close();
}
return maxId;
}