gpt4 book ai didi

android - SQLite Random() 在 ORDER BY 中排序不正确

转载 作者:IT王子 更新时间:2023-10-29 06:29:47 26 4
gpt4 key购买 nike

我的 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"

第三列的实际结果值当然每次运行都不同,但第三列缺少排序是一致的。为什么结果不按第三列排序?

最佳答案

Why do the results not sort by the third column?

因为该列是一个表达式,为了ORDER BY 的目的重新求值,产生不同的随机值。

抱歉,目前想不出一个实用的方法来保留每一行的随机顺序值。考虑更改您的要求 - ORDER BY RANDOM() 无论如何在大型数据集上表现不佳。

关于android - SQLite Random() 在 ORDER BY 中排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21973693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com