SQLite Android选择不包括某些列的随机行

时间:2018-10-12 02:11:41

标签: android sqlite random

是否可以从SQLite表中选择随机行,但是使用Android rawquery对行进行随机排序仅返回该行的特定列信息?示例:

表1

  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 :(得分:1)

这里是一个选项,它假设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;

答案 1 :(得分:1)

您可以使用此查询

SELECT Col2, Col4 FROM yourTable ORDER BY RANDOM() LIMIT 1;

答案 2 :(得分:1)

不建议在Db查询中使用Random,因为如果数据太大,操作可能会非常昂贵。 如果是100行,那么您可能可以做任何您想做的事情。

随机查询遍历整个数据库以生成随机行

相反,您可以分两步进行操作 1)找到行数 2)使用Math.random从1到count-1计算一个随机数; 然后将查询用作:

SELECT column FROM tableName LIMIT $random_number, 1

两者的过程相同,但是要在sql查询中获取随机数,然后再使用Math.random()进行获取,费用很高