Поддерживает ли sqlite в webkit функцию RANDOM ()? - PullRequest
3 голосов
/ 08 апреля 2011

Я кодирую приложение на основе Phonegap для iOS и пытаюсь вернуть 10 случайных строк из моей базы данных веб-набора Safari через Javascript.Мой запрос:

queryString = "SELECT * FROM SBA_TABLE
 WHERE (cat_gastrointestinal = 1)
 AND (answered_correctly = 0 OR answered_correctly = 1 OR answered_correctly = 2)
 ORDER BY RANDOM() LIMIT 10";

tx.executeSql(queryString, [], querySuccess5, errorCB);

Это работает, если я опускаю оператор 'ORDER BY RANDOM ()', который заставляет меня думать, что это не поддерживается.Можно ли использовать СЛУЧАЙНЫЙ метод, или мне нужно сгенерировать 10 случайных чисел и сделать 10 вызовов базы данных ?!Спасибо, Ник

Ответы [ 2 ]

2 голосов
/ 08 ноября 2012

У меня была та же проблема, я решил ее с помощью такого обходного пути:

seed = (Math.random() + 1) * 1111111;
queryString = "SELECT * FROM SBA_TABLE
 WHERE (cat_gastrointestinal = 1)
 AND (answered_correctly = 0 OR answered_correctly = 1 OR answered_correctly = 2)
 ORDER BY ROWID * ? % 10000 LIMIT 10";

tx.executeSql(queryString, [ seed ], querySuccess5, errorCB);

Используя функцию Javascript Math.random () и модуль по таблице ROWID в запросе.

0 голосов
/ 08 апреля 2011

Предварительное решение, если ORDER BY RANDOM() специально не работает в этой версии:

"SELECT *, RANDOM() AS rnd FROM SBA_TABLE
WHERE (cat_gastrointestinal = 1)
AND (answered_correctly = 0 OR answered_correctly = 1 OR answered_correctly = 2)
ORDER BY rnd LIMIT 10";
...