我的SQLite查询似乎从规定的“ ORDER BY”子句中返回结果。当我运行以下命令时,第三列给出的是我想要的随机值,但是ORDER BY似乎被忽略了。结果集似乎是随机排序的。
// 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, CAST(ABS( RANDOM() % frequency ) AS TEXT) AS myRand FROM person ORDER BY myRand"
id name myRand
------------------------------
23 Bob "1"
16 Joe "2"
67 Jane "1"
4 Jack "5"
无奈之下,我什至尝试了...
"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"
当然,第三列的实际结果值对于每次运行来说都是不同的,但是第三列上缺少排序是一致的。为什么结果不按第三列排序?
为什么结果不按第三列排序?
因为该列是一个出于目的而重新计算的表达式,所以会ORDER BY
产生不同的随机值。
抱歉,目前还无法想到在每行上保留随机顺序值的实用方法。考虑更改您的要求-ORDER BY RANDOM()
仍然无法在大型数据集上很好地执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句