我有一个表user
,其中包含我的用户信息。对于每个用户,我想生成5个随机UUID值。
我最初的想法是以下查询:
select user.identifier, random.identifier
from user
cross join (select gen_random_uuid() identifier from generate_series(1, 5)) random
这里的问题是每个用户现在都有相同的 5个随机UUID。
是否可以让Postgres再次为每个用户评估random
交叉加入?
修改
Postgres doet不支持在select
子句中包含多行。例如,这不起作用:
select gen_random_uuid(), (select gen_random_uuid() from generate_series(1, 5))
from generate_series(1, 5)
答案 0 :(得分:0)
with u (identifier) as (values (1),(2))
select u.identifier, random.identifier
from
u
inner join lateral (
select gen_random_uuid() as identifier, u.identifier as u_identifier
from generate_series(1, 2)
) random on u_identifier = u.identifier
;
identifier | identifier
------------+--------------------------------------
1 | c266a1d9-ce87-4fd1-b1fb-d46601ed36d7
1 | a6cef3ea-48e4-4463-8fab-f8f9dc0535dd
2 | 3c80e12c-7fb1-4524-88e1-764dcd9049df
2 | 9d12ae5d-f4be-4330-b78e-38843c440745
答案 1 :(得分:0)
select identifier, gen_random_uuid() from (
select user.identifier,gs
from user,generate_series(1, 5) gs )q1