Android: Obtenez valeur la plus élevée dans la colonne
Question
J'ai un pointage URL au contenu et je dois obtenir plus de valeur contenue dans l'une des colonnes. Y at-il fonction d'agrégation qui accomplira cela ou dois-je faire manuellement?
La solution
Si vous interrogez un fournisseur de contenu Android, vous devriez être en mesure d'atteindre cet objectif en passant MAX(COLUMN_NAME)
pour le paramètre de sélection de ContentResolver.query
:
getContentResolver().query(uri, projection, "MAX(COLUMN_NAME)", null, sortOrder);
Où Uri est l'adresse du fournisseur de contenu. Cela devrait revenir la seule ligne avec la valeur la plus élevée COLUMN_NAME.
Autres conseils
La base de données SQLite Android utilise, donc SELECT MAX(thecolumn) FROM TheTable
devrait fonctionner, comme dans toute autre application SQLite (ou pour tout autre question que SQL, « ite » ou non ;-). (Si vous ne l'utilisez android.database
vous feriez mieux de spécifier ce vous utilisez au lieu; -).
qui a fonctionné pour moi.
Sur la base des réponses de @Reto Meier et @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;
}