在MySQL中,如何从一个非常大的表中的特定列中随机选择一些值(比如1000个值)?

2024-10-05 11:07:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在MySQL数据库中有一个非常大的表,它有一个列名exa_id,这个表的行数超过10000000。我想通过Python中的pandas.read_sql语句随机有效地选择1000个数据。我怎么写代码?你知道吗

SQLselect ext_id from table_name order by rand() limit 1000执行得非常糟糕,我想换一种方式。你知道吗

另一种解释是exa_id列的内容是字符串,如“uudjsx-2220983-df”、“ujxnas-9800xdsd-d2”…,而不是自动递增序列。你知道吗


Tags: 数据代码namefromid数据库pandasread
2条回答

这在大多数情况下都有效:

select ext_id
from table_name t
where rand() < 2000 / 10000000
order by rand()
limit 1000;

内部查询选择大约2000行。有一些统计上的可变性。外部查询然后随机地对它们进行排序,并从中选择1000个。你知道吗

如果不知道行数,可以执行以下操作:

select t.ext_id
from table_name t cross join
     (select count(*) as cnt from t) tt
where rand() < 2000 / tt.cnt
order by rand()
limit 1000;

此查询将帮助您。你知道吗

SELECT name  FROM random AS r1
JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 100

相关问题 更多 >

    热门问题