我需要为每个用户抽取100条记录(它是表格中的一列)。 目前,我有这个代码:
SELECT * FROM sn.sn_graph_reduced
where user = '643495915'
ORDER BY RAND() LIMIT 100
显然,我需要删除where子句并添加一些内容,为表中的每个用户提取100条记录。 任何帮助赞赏 感谢
答案 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