如何使用CockroachDB从SQL表中选择随机行?例如,如果我有许多问题,并且每次学生加载时都想生成不同的序列。从CockroachDB中的`SELECT`返回随机行
3
A
回答
4
CockroachDB不提供一个有效的方法来做到这一点呢!对于非高效的方式,您可以使用SELECT ... FROM ... ORDER BY random() LIMIT 1;
或者,您可以在应用程序本身中处理混洗SELECT
语句的结果。将结果放入数组(或任何其他类似聚合的结构)后,您也可以在那里洗牌。
0
对于更有效的方法,您可以将整数列randomid
添加到每一行。插入时在该列中输入一个随机数。然后你可以检索与随机列:
SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;
在哪里?是一个随机数。
请注意,您需要额外的随机数存储,并且您必须索引randomid
列。
另请注意,您可能需要运行此查询两次(> =和<)以确保您获得结果。尽管在第一个查询中发现的可能性非常低。