0
如果我有兩列 - 一個ID字段和一個可以取10個可能值的分數字段,我怎樣才能爲每個ID選擇5個隨機行?我知道我可以通過從表中選擇以下5個隨機行:每個IDdb2爲給定ID選擇x個隨機行
select *, rand() as idx
from mytable
order by idx fetch first 5 rows only
但如何約5行?
如果我有兩列 - 一個ID字段和一個可以取10個可能值的分數字段,我怎樣才能爲每個ID選擇5個隨機行?我知道我可以通過從表中選擇以下5個隨機行:每個IDdb2爲給定ID選擇x個隨機行
select *, rand() as idx
from mytable
order by idx fetch first 5 rows only
但如何約5行?
可以使用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;
非常感謝@Gordon Linoff – brucezepplin