postgresql中的唯一随机整数

时间:2014-11-18 18:22:25

标签: sql postgresql random amazon-redshift

有没有办法在posgresql中生成唯一的(不同的)随机数(特别是红移)?以下代码生成5个随机整数,从1到10 替换:

SELECT round(random()*(10 - 1) + 1) from generate_series(1, 5);

有没有办法从1到10 生成一组5个随机整数而不用替换?感谢。

3 个答案:

答案 0 :(得分:7)

您可以使用generate_series生成1到10之间的所有数字,在order by子句中随机播放它们,然后进入前5位:

SELECT   num
FROM     GENERATE_SERIES (1, 10) AS s(num)
ORDER BY RANDOM()
LIMIT    5

答案 1 :(得分:1)

尝试这些选择

1)。

 
    SELECT (9 * random())::int + 1 r_num
    FROM   generate_series(1, 10)
    GROUP  BY 1
    LIMIT  5;
  

2)。的     


     
    SELECT round(random()*(10 - 1) + 1)::int r_num
    FROM   generate_series(1, 10) 
    GROUP  by 1 
    LIMIT  5;
    
    

答案 2 :(得分:1)

不是尝试删除重复项,而是从1到10开始使用所有不同的数字,然后从列表中随机选择:

select generate_series(1,10)
order by random()
limit 5

这基本上是Mureinik答案的清洁版本。