如何使用 CockroachDB 从 SQL 表中选择随机行?例如,如果我有很多问题,并且我想在学生每次加载它们时生成不同的序列。
问问题
518 次
3 回答
8
CockroachDB 还没有提供有效的方法来做到这一点!对于一种非有效的方式,您可以使用SELECT ... FROM ... ORDER BY random() LIMIT 1;
SELECT
或者,您可以在应用程序本身中处理对语句结果的洗牌。将结果放入数组(或任何其他类似聚合的结构)后,您还可以在那里打乱顺序。
于 2017-04-11T20:24:34.040 回答
1
我正在使用以下语句从 cockroach db 中选择随机行数。
SELECT ... FROM ... WHERE round(random()*10) % 10 = 0 LIMIT 10
于 2018-12-24T12:23:38.820 回答
0
为了更有效的方式,您可以randomid
向每一行添加一个整数列。插入时在该列中放置一个随机数。然后你可以检索一个随机列:
SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;
在哪里 ?是一个随机数。
请注意,您将需要额外的随机数存储空间,并且必须为该randomid
列编制索引。
另请注意,您可能需要运行此查询两次(>= 和 <)以确保获得结果。尽管在第一个查询中被淘汰的概率应该非常低。
于 2017-06-23T20:34:06.233 回答