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