2016-11-23 46 views
0

如果我有兩列 - 一個ID字段和一個可以取10個可能值的分數字段,我怎樣才能爲每個ID選擇5個隨機行?我知道我可以通過從表中選擇以下5個隨機行:每個IDdb2爲給定ID選擇x個隨機行

select *, rand() as idx 
from mytable 
order by idx fetch first 5 rows only 

但如何約5行?

回答

3

可以使用row_number()做到這一點:

select t.* 
from (select t.*, 
      row_number() over (partition by idx order by rand()) as seqnum 
     from mytable t 
    ) t 
where seqnum <= 5; 
+0

非常感謝@Gordon Linoff – brucezepplin