#sqlite #random #cordova
#sqlite #Случайный #кордова
Вопрос:
Есть ли альтернатива для этого?
Это мой код
function loadQ() {
db.transaction(function(t) {
t.executeSql('SELECT * FROM q ORDER BY RAND()', [], qDataHandler, errorHandler);
});
};
Теперь это не работает. Это сработает, если я удалю Rand() и заменю его на LIMIT 1 . Но я хочу, чтобы результат был рандомизирован.
Я подумываю о выполнении запроса для общего количества строк, а затем создаю функцию, которая выбирает числа от 0 до общего количества строк, а затем использует результат в моем loadQ в качестве идентификатора. Но я думаю, что это утомительная работа. Интересно, есть ли у вас идеи получше для этого?
большое спасибо.
Ответ №1:
Если вы используете случайное значение в качестве PK, оно завершится ошибкой, если у вас есть пробелы в строках.
Вот лучшее решение:
-
Запрос для COUNT() строк.
-
Сгенерируйте случайное число от 0 до count
-
Используйте результат в
LIMIT 1 OFFSET ?