【发布时间】:2016-11-23 16:21:18
【问题描述】:
如果我有两列 - 一个 ID 字段和一个可以取 10 个可能值的分数字段,我如何为每个 ID 选择 5 个随机行?我知道我可以使用以下方法从表中随机选择 5 行:
select *, rand() as idx
from mytable
order by idx fetch first 5 rows only
但是每个 ID 5 行怎么样?
【问题讨论】:
如果我有两列 - 一个 ID 字段和一个可以取 10 个可能值的分数字段,我如何为每个 ID 选择 5 个随机行?我知道我可以使用以下方法从表中随机选择 5 行:
select *, rand() as idx
from mytable
order by idx fetch first 5 rows only
但是每个 ID 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;
【讨论】: