【问题标题】:How do I select random rows from a table with limit and no duplicates?如何从有限制且没有重复的表中选择随机行?
【发布时间】:2021-02-22 04:58:26
【问题描述】:

我想从 mysql 表中随机选择 100 行。这很容易。

SELECT * FROM table_name ORDER BY RAND() LIMIT 100, 1;

当用户点击一个按钮时,我想要接下来的 100 行随机行,而不是前 100 行中的任何一行。

SELECT * FROM table_name ORDER BY RAND() LIMIT 100, 101;

又一次。

SELECT * FROM table_name ORDER BY RAND() LIMIT 100, 201;

问题是上面的查询选择重复。是否可以只选择以前没有选择过的随机行?

【问题讨论】:

    标签: mysql sql random duplicates sql-order-by


    【解决方案1】:

    一种方法是将参数传递给RAND() - 这称为种子。作为explained in the documentation

    这种行为的一个含义是,对于相等的参数值,RAND(N) 每次返回相同的值,从而产生可重复的列值序列。

    所以,考虑一下,例如:

    SELECT * FROM table_name ORDER BY RAND(123) LIMIT 100, 101;
    

    只要提供相同的种子,排序就可以重复。只需确保在开始一系列搜索时更改种子即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 2013-07-19
      • 2012-02-05
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      相关资源
      最近更新 更多