Android:获取列中的最高价值

时间:2009-05-25 13:07:16

标签: sql database android aggregate

我有一个指向内容的网址,我需要获得其中一列中包含的最高价值。是否有任何聚合函数可以实现,或者我必须手动执行此操作?

3 个答案:

答案 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;
}