2

我想要实现的是为一个过程选择一个控制组。为此,我使用了 random(),为了调试/一致性,我希望能够以可重复的方式设置随机数。意思是,一旦它为用户 123 分配随机数 .001,我就会运行查询。在不同的时间我删除了以前的数据,我调用了相同的查询,并且再次为用户 123 分配了随机数 0.001。

我努力了:

SELECT setseed(0);
SELECT 1, random() from generate_series(1,10);

每次运行我都会收到一个不同的随机数。

SELECT 1, setseed(0), random() from generate_series(1,10);

每行接收相同的随机数,这是无用的。

我确定这里有一些我不明白的地方。任何帮助表示赞赏。

4

1 回答 1

5

union all使用所需的查询执行setseed()查询。有必要匹配两个查询中的列类型。setseed()返回void

select setseed(0), null

union all

select null, random()
from generate_series(1, 10)

offset 1
;

该子句从结果集中offset 1消除setseed() row

于 2014-08-26T19:20:15.713 回答