从CockroachDB中的`SELECT`返回随机行

时间:2017-04-11 20:24:34

标签: cockroachdb

如何使用CockroachDB从SQL表中选择随机行?例如,如果我有很多问题,并且每次学生加载时都希望生成不同的序列。

3 个答案:

答案 0 :(得分:6)

CockroachDB还没有提供有效的方法来实现这一目标!对于无效的方式,您可以使用SELECT ... FROM ... ORDER BY random() LIMIT 1;

或者,您可以处理应用程序本身中SELECT语句的结果。将结果放入数组(或任何其他类似聚合的结构)后,您也可以在那里随机调整顺序。

答案 1 :(得分:0)

为了更有效地,您可以为每一行添加整数列randomid。插入时在该列中放入一个随机数。然后,您可以使用以下内容检索随机列:

SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;

在哪里?是一个随机数。

请注意,随机数需要额外的存储空间,您必须将randomid列编入索引。

另请注意,您可能需要运行此查询两次(> =和<)以确保获得结果。虽然第一次查询的概率非常低。

答案 2 :(得分:0)

我正在使用以下语句从蟑螂数据库中随机选择行数。

SELECT ... FROM ... WHERE round(random()*10) % 10 = 0 LIMIT 10