val1の列に最大値の行を選択するsqliteテーブルがあります。私が来たソリューションCursorLoader使用Sqlite MAXを使用する - 最大値が等しい場合に最新のものを返す方法
id val1 val2 date
1 28800 39600 2016-09-23T04:23:26Z
2 28800 28800 2016-09-23T07:27:22Z
は、次のとおりです。私は同じ最大値を持つ少数の行を持っているとき
String[] projection = new String[]{DB.COL_ID,
"MAX(" + DB.COL_VAR1 + ")" + "AS " + DB.COL_VAR1,
"date(" + DB.COL_TIME + ") AS " + DATE_TIME};
String selection = "((" +
DATE_TIME + " >= date('" + from + "')) AND (" + DATE_TIME + " <= date('" + to + "'))" +
"GROUP BY " + DATE_TIME;
return new CursorLoader(context, ContentProvider.createUri(DBSleep.class, null), projection, selection, null, sortOrder);
これは、上記のような場合を除いて、正常に動作します。 Sqlite MAX()は、それらのうちの1つを任意に選択しますが、最新の日付のものを選択します。 (したがって、上記の場合、結果は行2であり、行1ではなく、Sqliteは行1を返します。
これは可能ですか?
使用ORDER BYをLIMIT 1 –
問題と私はGROUP BYを持っている必要があります私はテーブルに存在する毎日1つの価値を持ちたいと思っています。 – southerton