Android: получить наибольшее значение в столбце - PullRequest
5 голосов
/ 25 мая 2009

У меня есть URL, указывающий на контент, и мне нужно получить максимальное значение, содержащееся в одном из столбцов. Есть ли какая-либо агрегатная функция, которая выполнит это, или мне придется делать это вручную?

Ответы [ 3 ]

19 голосов
/ 04 июня 2009

Если вы обращаетесь к провайдеру контента Android, вы можете достичь этого, передав MAX(COLUMN_NAME) параметру выбора ContentResolver.query:

getContentResolver().query(uri, projection, "MAX(COLUMN_NAME)", null, sortOrder);

Где Uri - адрес провайдера контента. Это должно вернуть одну строку с наибольшим значением в COLUMN_NAME.

1 голос
/ 21 августа 2018

То, что у меня сработало.

На основании ответов @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;
}
1 голос
/ 25 мая 2009

База данных Android использует SQLite, поэтому SELECT MAX(thecolumn) FROM TheTable должен работать, как и в любой другой реализации SQLite (или в этом отношении любой другой SQL, "итерация" или нет ;-). (Если вы не используете android.database, вам лучше указать , что вы используете вместо; -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...