如何选择随机用户

时间:2018-02-11 13:28:37

标签: mysql sql phpmyadmin

enter image description here

我有下表及其字段,此表有超过30K的用户,

每个使用者都有超过1000条记录,

userid被命名为ANONID,我想使用MYSQL随机选择100个用户及其所有记录

提前致谢

3 个答案:

答案 0 :(得分:3)

"兰特()"早期答案中提到的函数在SQL 2k12中不起作用。对于SQL使用以下查询来使用" newid()"获取随机100行功能 (" newid()"内置于SQL函数中)

select * from table
order by newid()
offset 0 rows
fetch  next 100 rows only

答案 1 :(得分:2)

对于30,000表和单个样本的表,您可以使用:

select t.*
from t
order by rand()
limit 100;

这正是您想要的。返回需要几秒钟。

如果性能是一个问题,还有其他更复杂的方法来采样数据。一种简单的方法可以减少order by之前的行数。因此,5%的样本将加快查询速度,这是一种方法:

select t.*
from t
where rand() < 0.05
order by rand()
limit 100;

编辑:

您需要所谓的群集样本或分层样本。使用子查询:

select t.*
from t join
     (select userid
      from (select distinct userid from t) t
      order by rand()
      limit 100
     ) tt
     on t.userid = tt.userid;

答案 2 :(得分:1)

SELECT * FROM table
ORDER BY RAND()
LIMIT 100

速度很慢,但确实有效。