Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite Random()排序不正确_Android_Sql_Sqlite_Sorting_Sql Order By - Fatal编程技术网

Android SQLite Random()排序不正确

Android SQLite Random()排序不正确,android,sql,sqlite,sorting,sql-order-by,Android,Sql,Sqlite,Sorting,Sql Order By,我的SQLite查询似乎在返回规定的“ORDERBY”子句之外的结果。当我运行下面的程序时,第三列给出了我想要的随机值,但是orderby看起来被忽略了。结果集似乎是随机排序的 // frequency is an int of either 5, 10, or 15 String query = "SELECT id, name, ABS( RANDOM() % frequency ) FROM person ORDER BY 3" SQLiteDatabase database = thi

我的SQLite查询似乎在返回规定的“ORDERBY”子句之外的结果。当我运行下面的程序时,第三列给出了我想要的随机值,但是orderby看起来被忽略了。结果集似乎是随机排序的

// frequency is an int of either 5, 10, or 15
String query = "SELECT id, name, ABS( RANDOM() % frequency ) FROM person ORDER BY 3"

SQLiteDatabase database = this.getReadableDatabase();
Cursor cursor = database.rawQuery(query, null);
返回如下内容:

id    name    (random)
------------------------------
16    Joe     1
 4    Jack    0
67    Jane    7
23    Bob     3
我尝试了许多变化,包括以下内容,但都有类似的结果:第三列中的行没有排序:

"SELECT id, name, (RANDOM() % frequency) AS myRand FROM person ORDER BY myRand"
id    name    myRand
------------------------------
23    Bob     2
16    Joe     1
67    Jane    -4
 4    Jack    0

在绝望中,我甚至尝试了这个

"SELECT id, name, 'A' || CAST(ABS( RANDOM() % frequency ) AS TEXT) AS myRand FROM person ORDER BY myRand"
id    name    myRand
------------------------------
 4    Jack    "A9"
23    Bob     "A3"
67    Jane    "A8"
16    Joe     "A2"
当然,第三列的实际结果值对于每次运行都不同,但是第三列上缺少排序是一致的。 为什么结果不按第三列排序

为什么结果不按第三列排序

因为该列是一个表达式,它根据的顺序重新计算,产生不同的随机值


抱歉,目前无法想出一种实用的方法来保存每行上的随机顺序值。考虑更改您的要求-<代码>按顺序()/ <代码>在大型数据集上执行不好。

这里有一个SQL小提琴,它也有同样的问题:
"SELECT id, name, 'A' || CAST(ABS( RANDOM() % frequency ) AS TEXT) AS myRand FROM person ORDER BY myRand"
id    name    myRand
------------------------------
 4    Jack    "A9"
23    Bob     "A3"
67    Jane    "A8"
16    Joe     "A2"