Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres-对左侧的每一行重新进行评估_Postgresql_Join - Fatal编程技术网

Postgresql Postgres-对左侧的每一行重新进行评估

Postgresql Postgres-对左侧的每一行重新进行评估,postgresql,join,Postgresql,Join,我有一个表用户,它保存我的用户信息。对于每个用户,我想生成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为每个用户重新评估随

我有一个表用户,它保存我的用户信息。对于每个用户,我想生成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为每个用户重新评估随机交叉连接

编辑

Postgres不支持select子句中有多行。例如,这不起作用:

select gen_random_uuid(), (select gen_random_uuid() from generate_series(1, 5))
from generate_series(1, 5)

无法100%确定PG是否支持此操作,但应选择用户。标识符,从generate_series1、5中选择gen_random_uuid作为用户应执行此操作的标识符。@gorefest请参阅更新!Postgres不支持此操作。请稍等,不应该执行此操作吗?从中选择user.identifier、gen\u random\u uuiduser@gorefest我希望每个用户有5个随机值,而不仅仅是一个。我认为您的查询是有效的,但只给了我一个随机值。这很奇怪,因为应该为每一行启动函数不是100%确定PG是否支持这一点,而是应该执行一个SELECT user。标识符,从generate_series1,5中选择gen_random_uuid作为用户的标识符来执行此任务。@gorefest请参阅更新!Postgres不支持此操作。请稍等,不应该执行此操作吗?从中选择user.identifier、gen\u random\u uuiduser@gorefest我希望每个用户有5个随机值,而不仅仅是一个。我认为您的查询是有效的,但只给了我一个随机值。这很奇怪,因为函数应该为每个行连接激发,有趣的是,我不知道这样的连接存在。聪明的解决方案,谢谢。横向连接,有趣,我不知道这样的连接存在。聪明的解决方案,谢谢。也是很好的解决方案。对不起,我不得不选择一个解决方案,我喜欢横向连接的聪明。这也是一个很好的解决方案。抱歉,我不得不选择一种解决方案,我喜欢横向连接的聪明。
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
select identifier, gen_random_uuid() from ( 
select       user.identifier,gs
from         user,generate_series(1, 5) gs )q1