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