2017-04-11 76 views

回答

4

CockroachDB不提供一个有效的方法来做到这一点呢!对于非高效的方式,您可以使用SELECT ... FROM ... ORDER BY random() LIMIT 1;

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

0

对于更有效的方法,您可以将整数列randomid添加到每一行。插入时在该列中输入一个随机数。然后你可以检索与随机列:

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

在哪里?是一个随机数。

请注意,您需要额外的随机数存储,并且您必须索引randomid列。

另请注意,您可能需要运行此查询两次(> =和<)以确保您获得结果。尽管在第一个查询中发现的可能性非常低。