PostgreSQL:如何选择具有重复结果的多个随机行
我的postgres数据库中有一个表mytab,我想从中选择多个随机行。我可以通过执行PostgreSQL:如何选择具有重复结果的多个随机行,postgresql,random,Postgresql,Random,我的postgres数据库中有一个表mytab,我想从中选择多个随机行。我可以通过执行 select * from mytab offset random() * (select count(*) from mytab) limit X; 但我的目标是找到一个查询,该查询返回包含X个随机行的集合,并从mytab重复。有可能吗 编辑:这里有更多的解释。 例如,如果mytab包含 我的标签 第1行 第2行 第3行 第4行 第5行 我想去 第2-1行 第3-2行 第2-3行 第4-4行 . . .
select * from mytab offset random() * (select count(*) from mytab) limit X;
但我的目标是找到一个查询,该查询返回包含X个随机行的集合,并从mytab重复。有可能吗
编辑:这里有更多的解释。
例如,如果mytab包含
我的标签
第1行
第2行
第3行
第4行
第5行
我想去
第2-1行
第3-2行
第2-3行
第4-4行
.
.
.
.
第5行-X-3
第1行-X-2
第3行-X-1
第1-X行
所以你需要一个随机的替换选择。使用generate_系列中的随机函数生成所需的随机整数数,并进行替换 然后在用行号装饰后将其连接到原始表 如果您知道原始表有一个紧密压缩的整数主键,通常不可能知道,那么您可以通过不需要动态计算行数来优化它
select * from
(select floor(random()*(select count(*) from pgbench_tellers)+1) as
row_number from generate_series(1,10)
) rwr
join
(select *, row_number() over () from pgbench_tellers) original
using (row_number) ;
在这里使用pgbench_出纳员而不是您的表,因为我无法使用假设的表进行测试。重复随机行的随机数是什么意思?您希望您的查询包含随机重复多次的同一行吗?请澄清。使用一个示例来演示是否难以用文字表达。您确实需要提供示例数据,如CREATE TABLE和INSERT语句以及此语句的预期结果。在generate_系列和一些子选择/联接的帮助下,这应该是可行的。谢谢,这正是我想要的!