Random() в sqlite и Android sdk

Я хочу извлечь случайные строки из базы данных приложения sqlite в Android. Я знаю, что с помощью sqlite вы можете выбрать случайные строки с помощью:

SELECT * FROM table ORDER BY RANDOM() LIMIT 1;

В приложении у меня есть что-то вроде этого

return mDb.query(TABLE, new String[] {"col1", "col2"}, null, null, null, null, "Random()", "2");

это для извлечения двух случайных строк в таблице ТАБЛИЦА. Но он продолжает возвращать одни и те же строки. Что не так с этим утверждением?

Спасибо

Ответ 1

попробуйте это

Cursor cursor = this.db.query("YourTable Order BY RANDOM() LIMIT 1",
                new String[] { "*" }, null, null, null, null, null);

Ответ 2

Задайте запрос, как показано ниже:

public Cursor getRandomDataItemFromDb(String tableName, int limit) {
    Cursor cursor = db.rawQuery("SELECT * FROM " + tableName+ " ORDER BY RANDOM() LIMIT " + limit, null);
    if (cursor.moveToFirst()) {
        return cursor;
    }
    return cursor;
}

Готово

Ответ 3

Используйте предложение orderBy, подобное этому

Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, "RANDOM() limit 1");

Ответ 4

Используйте случайную функцию как в строке в вашем запросе. Я дал вам образец ниже.

String orderBy = "RANDOM()";
Cursor dbc = this.db.query(TABLE_NAME, columnArray, null, null, null, null, orderBy, null);