SQLite Android Выбрать случайную строку, исключая некоторые столбцы - PullRequest
0 голосов
/ 12 октября 2018

Можно ли выбрать случайную строку из таблицы SQLite, однако строка должна возвращать только определенную информацию столбца для этой строки, используя сортировку необработанных запросов Android по случайному выбору?Пример:

Table1

  C1      Col2   Col3    Col4

1 A       B      C       D

2 E       F      G       H

3 I       J      K       L

4 M       N      O       P

5 Q       R      S       T

6 U       V      W       X

Можно ли случайным образом выбрать строку от 1 до 6, исключая столбцы C1 и C3, возвращая таким образом:

J, L или N,P или V, X и т. Д. *

Какие-нибудь примеры оператора SELECT необработанного запроса, который бы это сделал?

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Вы можете использовать этот запрос

SELECT Col2, Col4 FROM yourTable ORDER BY RANDOM() LIMIT 1;
0 голосов
/ 12 октября 2018

Использование Random внутри Db-запроса не рекомендуется, так как это может быть довольно дорогой операцией, если ваши данные слишком большие.Если это 100 строк, то, вероятно, вы можете делать все, что хотите.

Случайный запрос проходит всю базу данных для генерации случайной строки

Вместо этого вы можете сделать это за 2 шага 1) Найти количество строк 2) Вычислить случайное число с помощью Math.randomот 1 до 1;Затем используйте запрос следующим образом:

SELECT column FROM tableName LIMIT $random_number, 1

Процесс в обоих случаях одинаков, но получение случайного числа внутри запроса sql обходится дороже, чем его получение с помощью Math.random ()

0 голосов
/ 12 октября 2018

Вот один вариант, который предполагает, что столбец C1 определяет порядок:

SELECT Col2, Col4
FROM yourTable
WHERE C1 <> (SELECT MIN(C1) FROM yourTable) AND
      C1 <> (SELECT MAX(C1) FROM yourTable)
ORDER BY RANDOM()
LIMIT 1;
...