2014-08-28 118 views
0

我需要爲每個用戶(它是表中的一列)對100個記錄進行採樣。 目前,我有這樣的代碼:SQL(MySQL)爲每個用戶選擇隨機記錄集

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

Obvously,我需要刪除where子句,並添加東西,將樣品100個記錄表中的每個用戶。 任何幫助表示讚賞 感謝

回答

0

您可以使用排名查詢MySQL沒有窗函數對於這種類型的結果,讓每組

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 

n條記錄以上查詢會給行列,其所屬的記錄到相同的用戶組和在父母查詢中,您可以將記錄限制爲每個用戶100個