
我有下表及其字段,这个表有超过30K的用户,
每次使用都有1000多条记录,
userid命名为ANONID,我想使用MYSQL随机选择100个用户及其所有记录。
提前感谢
发布于 2018-02-11 13:30:32
对于一个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;发布于 2018-02-11 13:54:41
前面的答案中提到的"rand()“函数在SQL2K12中不工作。对于SQL,使用以下查询使用"newid()“函数获得随机的100行(SQL函数中内置了”newid()“)
select * from table
order by newid()
offset 0 rows
fetch next 100 rows only发布于 2018-02-11 13:31:39
SELECT * FROM table
ORDER BY RAND()
LIMIT 100这是缓慢的,但它的工作。
https://stackoverflow.com/questions/48731989
复制相似问题