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

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

每次跑步我都会收到不同的随机数。
SELECT 1, setseed(0), random() from generate_series(1,10);

每行接收相同的随机数,这是无用的。
我肯定有些东西我不明白。如有任何帮助,我们将不胜感激。

最佳答案

使用所需查询执行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

07-25 21:48