sqlite和Android sdk中的Random()

sqlite和Android sdk中的Random(),android,sqlite,Android,Sqlite,我想从Android中的应用程序sqlite数据库中提取随机行。我知道,使用sqlite,您可以使用以下选项选择随机行: SELECT * FROM table ORDER BY RANDOM() LIMIT 1; 在应用程序中,我有这样的东西 return mDb.query(TABLE, new String[] {"col1", "col2"}, null, null, null, null, "Random()", "2"); Cursor cursor = db.query(TAB

我想从Android中的应用程序sqlite数据库中提取随机行。我知道,使用sqlite,您可以使用以下选项选择随机行:

SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
在应用程序中,我有这样的东西

return mDb.query(TABLE, new String[] {"col1", "col2"}, null, null, null, null, "Random()", "2");
Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, "RANDOM() limit 1");
这用于提取表中的两个随机行。但它总是返回相同的行。这句话怎么了

谢谢你试试这个

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

像这样使用orderBy子句

return mDb.query(TABLE, new String[] {"col1", "col2"}, null, null, null, null, "Random()", "2");
Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, "RANDOM() limit 1");
如下所示设置查询:

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;
}

完成

在查询中使用字符串中的随机函数。我在下面给了你一个样本

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

我没有研究过这个特定的Random(),但我知道一些Random()是基于时间的,如果它在时钟周期内以相同的时间执行,Random()不会返回相同的结果吗?我不明白为什么会这样做(另外,android的最新版本正在强制执行更多的转义,因此这可能会停止工作)这个评论肯定是一段时间后,但你的回答帮了我很大的忙!