【发布时间】:2017-09-07 09:50:00
【问题描述】:
如何使用 CockroachDB 从 SQL 表中选择随机行?例如,如果我有许多问题,并且我想在学生每次加载它们时生成不同的序列。
【问题讨论】:
标签: cockroachdb
如何使用 CockroachDB 从 SQL 表中选择随机行?例如,如果我有许多问题,并且我想在学生每次加载它们时生成不同的序列。
【问题讨论】:
标签: cockroachdb
CockroachDB 还没有提供有效的方法来做到这一点!对于非高效方式,您可以使用SELECT ... FROM ... ORDER BY random() LIMIT 1;
或者,您可以在应用程序本身中处理 SELECT 语句的结果。将结果放入数组(或任何其他类似聚合的结构)后,您还可以在那里打乱顺序。
【讨论】:
为了更有效的方式,您可以将整数列 randomid 添加到每一行。插入时在该列中放置一个随机数。然后你可以检索一个随机列:
SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;
在哪里?是一个随机数。
请注意,您将需要额外的随机数存储空间,并且您必须索引 randomid 列。
另请注意,您可能需要运行此查询两次(>= 和
【讨论】:
我正在使用以下语句从 cockroach db 中选择随机行数。
SELECT ... FROM ... WHERE round(random()*10) % 10 = 0 LIMIT 10
【讨论】: