如何从mysql数据库中选择随机记录

时间:2018-10-20 15:16:43

标签: mysql database select random google-bigquery

我需要从一个非常大的数据库中随机选择说2000000条记录。我看了以前的问题。因此,请勿将此问题标记为重复。我需要澄清。大多数答案建议使用ORDER BY RAND()函数。所以我的查询将是:

SELECT DISTINCT no
FROM table
WHERE name != "null"
ORDER BY RAND()
LIMIT 2000000;

我希望每条记录都是随机选择的。我不确定我是否了解这里的ORDER BY RAND()效果。但恐怕它将选择一个随机记录,例如3498,并会从那里继续选择,例如,下一个记录将是:3499、3500、3501等。 我希望每个记录都是随机的,而不是从随机记录开始。

我如何选择2000000条随机记录,其中每条记录都是随机选择的?您能简化ORDER BY RAND()的作用吗?

请注意,我使用的是Google BigQuery,因此此处的性能问题不会成为大问题。我只想达到选择随机2000000条记录的要求。

1 个答案:

答案 0 :(得分:0)

SELECT x
FROM T
ORDER BY RAND()

等同于

SELECT x
FROM (
  SELECT x, RAND() AS r
  FROM T
)
ORDER BY r

查询为每一行生成一个随机值,然后使用该随机值对行进行排序。如果包含限制:

SELECT x
FROM T
ORDER BY RAND()
LIMIT 10

这将从表中随机选择10行。