在列中插入随机数序列的 PostgreSQL 过程

PostgreSQL procedure to insert a sequence of random numbers in a column

我需要将 k 个由 | 连接的随机数(在 1:n 范围内)插入到 table 'X' 的列中,其中n 是 PostgreSQL 过程中 table 'Y' 中的行数。

求table'Y'

中的行数

select count(*) into n from Y

这将在 1:n

范围内生成 k 个随机数

SELECT num FROM GENERATE_SERIES (1, n) AS s(num) ORDER BY RANDOM() LIMIT k;

如何将 k 整数与 | 连接起来并将它们插入到 'X' 中?

可以使用insert ... select和字符串聚合函数string_agg():

insert into y (x)
select string_agg(num::text, '|')
from (select num from generate_series (1, n) as s(num) order by random() limit k) s

请注意,您需要 n 等于或大于 k 才能使此技术有意义。