我需要从一个非常大的数据库中随机选择说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条记录的要求。
答案 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行。