【问题标题】:Android: Get highest value in columnAndroid:在列中获取最高值
【发布时间】:2010-10-28 17:54:56
【问题描述】:

我有一个指向内容的 URL,我需要获取其中一列中包含的最高值。是否有任何聚合函数可以完成此操作,还是我必须手动执行此操作?

【问题讨论】:

    标签: sql database android aggregate


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多