Android SQLite ORDER BY не работает

У меня очень простая ситуация:

У меня есть таблица с примерно 5k строками:

CREATE TABLE "words" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "name" TEXT NOT NULL , "def" TEXT NOT NULL, "rand" INTEGER)

Который я периодически обновляю, используя «UPDATE words SET rand = random ()»

В android, когда я создаю курсор с помощью rawQuery (), используя следующее:

SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC;

Возвращенный курсор не повторяется в правильном порядке. Например, он будет выводить столбцы со значениями rand в следующем порядке:

-1298882092
-2138143484
-1115732861
118839193
...

Кто-нибудь знает, что здесь происходит? Разве это не должно работать? Если я запустил тот же самый запрос в SQLiteManager, он вернет результаты в правильном порядке, поэтому, похоже, это зависит от Android / курсора.

ОБНОВЛЕНИЕ:

Вот код в Android, я пробовал несколько способов:

Попытка 1:

Cursor cursor = db.rawQuery("SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC", new String[]{});

Попытка 2:

Cursor cursor = db.query("words", new String[]{"id", "name", "def", "rand"},
            null, null, null, null, "rand ASC");

В обоих случаях я выполняю итерацию следующим образом:

while(cursor.moveToNext()) {
    ...
    Log.i("Test", cursor.getInt(3));
    ...
}
7
задан ghempton 30 January 2011 в 20:39
поделиться