【发布时间】:2014-03-28 17:50:42
【问题描述】:
我正在尝试使用此 SQL 查询:
"SELECT * FROM people WHERE gender='female' ORDER BY val, RANDOM();"
但是,我收到以下错误:
E/SQLiteLog: (1) 未授权使用函数:random
有没有等效的方法来做到这一点?如果可能,使用单个查询。
我读到 Cordova / Phonegap - SQLite 禁用了RANDOM () 功能,因为它会占用大量内存,并创建临时表,但该表最多有 800 行,结果由WHERE 过滤。
编辑: 我试图使用以下函数弄乱结果 但后来我得到一个错误!
function shuffle(array) {
var counter = array.length,
temp, index;
// While there are elements in the array
while (counter > 0) {
// Pick a random index
index = Math.floor(Math.random() * counter);
// Decrease counter by 1
counter--;
// And swap the last element with it
temp = array[counter];
array[counter] = array[index];
array[index] = temp;
}
return array;
}
var resultArray = [];
for (var x = 0; x < results.rows.length; x += 1) {
resultArray.push(results.rows.item(x));
}
var res = shuffle(resultArray);
for (var i = 0; i < res.rows.length; i++) {
name = (res.rows.item(i).name);
}
错误:
未捕获的类型错误:无法读取未定义的属性“长度”
谢谢!
【问题讨论】:
-
如果你有那么几行,为什么不将它们拉入并在内存中随机化?
-
如何先按“val”排序,然后在内存中随机化?
-
@JoachimIsaksson 我添加了更多代码,请检查!
标签: android sql sqlite cordova