有没有办法在posgresql中生成唯一的(不同的)随机数(特别是红移)?以下代码生成5个随机整数,从1到10 ,替换:
SELECT round(random()*(10 - 1) + 1) from generate_series(1, 5);
有没有办法从1到10 生成一组5个随机整数而不用替换?感谢。
答案 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答案的清洁版本。