首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择随机用户

问如何选择随机用户
EN

Stack Overflow用户
提问于 2018-02-11 13:28:37
回答 3查看 738关注 0票数 1

​

​

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

每次使用都有1000多条记录,

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

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-11 13:30:32

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

代码语言:javascript
复制
select t.*
from t
order by rand()
limit 100;

这正是你想要的。要几秒钟才能回来。

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

代码语言:javascript
复制
select t.*
from t
where rand() < 0.05
order by rand()
limit 100;

编辑:

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

代码语言:javascript
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2018-02-11 13:54:41

前面的答案中提到的"rand()“函数在SQL2K12中不工作。对于SQL,使用以下查询使用"newid()“函数获得随机的100行(SQL函数中内置了”newid()“)

代码语言:javascript
复制
select * from table
order by newid()
offset 0 rows
fetch  next 100 rows only
票数 4
EN

Stack Overflow用户

发布于 2018-02-11 13:31:39

代码语言:javascript
复制
SELECT * FROM table
ORDER BY RAND()
LIMIT 100

这是缓慢的,但它的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48731989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档