Android Cordova/Phonegap中的ORDER BY RANDOM()

Android Cordova/Phonegap中的ORDER BY RANDOM(),android,sql,sqlite,cordova,Android,Sql,Sqlite,Cordova,我正在尝试使用此SQL查询: "SELECT * FROM people WHERE gender='female' ORDER BY val, RANDOM();" 但是,我得到了以下错误: E/SQLiteLog:(1)未授权使用函数:random 有没有一种同等的方法可以做到这一点?如果可能,使用单个查询 我读到Cordova/Phonegap-SQLite禁用了RANDOM()函数,因为它消耗了大量内存,并创建了临时表,但该表最多有800行,结果由WHERE过滤 编辑: 我试图用下面的

我正在尝试使用此
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);
}
函数洗牌(数组){
var counter=array.length,
温度、指数;
//当数组中有元素时
而(计数器>0){
//选择一个随机索引
索引=Math.floor(Math.random()*计数器);
//将计数器减少1
计数器--;
//并用它交换最后一个元素
温度=阵列[计数器];
数组[计数器]=数组[索引];
数组[索引]=温度;
}
返回数组;
}
var resultArray=[];
对于(变量x=0;x
错误:

未捕获的TypeError:无法读取未定义的属性“length”

谢谢

var res=shuffle(resultArray);
var res = shuffle(resultArray);
for (var i=0; i < res.length; i++) 
{
    name = (res[i].name);
}
对于(变量i=0;i
如果你有那么几行,为什么不把它们拉进去,在内存中随机化?我怎样才能先按“val”排序,然后在内存中随机化呢?@JoachimIsaksson我添加了更多的代码,请检查!请解释你的代码,让它更有教育意义。基本上,这是访问随机数组的正确方法,请参阅我问题中的随机函数。我的意思是在你的答案中,而不是在评论中。