SQL(MySQL)为每个用户选择随机记录集

时间:2014-08-28 17:10:55

标签: mysql sql random

我需要为每个用户抽取100条记录(它是表格中的一列)。 目前,我有这个代码:

    SELECT * FROM sn.sn_graph_reduced 
    where user = '643495915'
    ORDER BY RAND() LIMIT 100

显然,我需要删除where子句并添加一些内容,为表中的每个用户提取100条记录。 任何帮助赞赏 感谢

1 个答案:

答案 0 :(得分:0)

你可以使用排名查询mysql没有这种类型结果的窗口函数来获得每组n条记录

SELECT * FROM (
SELECT g.*,
@r:= CASE WHEN @g = g.`user` THEN @r +1 ELSE 1 END rownum,
@g:= g.`user` user_group
 FROM sn.sn_graph_reduced g
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY `user` , RAND() 
) t
 WHERE rownum <= 100 

以上查询将为属于同一用户组的记录提供排名,在父查询中,您可以将每个用户的记录限制为100