【问题标题】:Return random rows from `SELECT` in CockroachDB从 CockroachDB 中的“SELECT”返回随机行
【发布时间】:2017-09-07 09:50:00
【问题描述】:

如何使用 CockroachDB 从 SQL 表中选择随机行?例如,如果我有许多问题,并且我想在学生每次加载它们时生成不同的序列。

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      为了更有效的方式,您可以将整数列 randomid 添加到每一行。插入时在该列中放置一个随机数。然后你可以检索一个随机列:

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

      在哪里?是一个随机数。

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

      另请注意,您可能需要运行此查询两次(>= 和

      【讨论】:

        【解决方案3】:

        我正在使用以下语句从 cockroach db 中选择随机行数。

        SELECT ... FROM ... WHERE round(random()*10) % 10 = 0 LIMIT 10
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-13
          • 1970-01-01
          • 2014-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多