Android SQLite Random()排序不正确
我的SQLite查询似乎在返回规定的“ORDERBY”子句之外的结果。当我运行下面的程序时,第三列给出了我想要的随机值,但是orderby看起来被忽略了。结果集似乎是随机排序的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
// 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"