Phonegap не поддерживает sql Rand(), что делать?

#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, оно завершится ошибкой, если у вас есть пробелы в строках.

Вот лучшее решение:

  1. Запрос для COUNT() строк.

  2. Сгенерируйте случайное число от 0 до count

  3. Используйте результат в LIMIT 1 OFFSET ?