【发布时间】:2010-10-28 17:54:56
【问题描述】:
我有一个指向内容的 URL,我需要获取其中一列中包含的最高值。是否有任何聚合函数可以完成此操作,还是我必须手动执行此操作?
【问题讨论】:
标签: sql database android aggregate
我有一个指向内容的 URL,我需要获取其中一列中包含的最高值。是否有任何聚合函数可以完成此操作,还是我必须手动执行此操作?
【问题讨论】:
标签: sql database android aggregate
如果您查询的是 Android 内容提供者,您应该可以通过将 MAX(COLUMN_NAME) 传递给 ContentResolver.query 的选择参数来实现:
getContentResolver().query(uri, projection, "MAX(COLUMN_NAME)", null, sortOrder);
其中 Uri 是内容提供者的地址。这应该返回 COLUMN_NAME 中具有最高值的单行。
【讨论】:
"MAX(COLUMN_NAME)" 应该用作投影,而不是选择。
Android 的数据库使用 SQLite,因此 SELECT MAX(thecolumn) FROM TheTable 应该可以工作,就像在任何其他 SQLite 实现中一样(或者就此而言,任何其他 SQL,“ite”与否;-)。 (如果你没有使用android.database,你最好指定what你正在使用;-)。
【讨论】:
对我有用的。
基于@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;
}
【讨论】: