Dav*_*ele 5 sql postgresql join lateral
我正在尝试生成下表:
random person a | random utility 1
random person a | random utility 2
random person a | random utility 3
random person b | random utility 4
random person b | random utility 5
random person b | random utility 6
Run Code Online (Sandbox Code Playgroud)
所以,我想随机生成两个人,为每个人生成 3 个随机实用程序。生成的公用事业不会在人之间共享。
我想出了以下查询:
select gen_random_uuid() person, utility.utility
from generate_series(1, 2) person
inner join lateral (select person, gen_random_uuid() utility from generate_series(1, 3)) utility
on person.person = utility.person;
Run Code Online (Sandbox Code Playgroud)
但这会产生以下内容:
64bf364b-ff74-4888-b2d9-0ffcf3147dd7 | f8455aa3-73ab-4432-9c49-2c940da28fa7
05f54217-0316-410d-83e8-2b5306eee143 | 68f7b48-2561-438c-a906-34b141c4adc5
07c23fc3-a6b9-4d74-a611-264c4de9a0bd | 5a597190-09f9-44ea-960d-f6657aa10a81
b5903b45-f96a-4eb4-8b67-95340131a29b | 742daba-de73-45c4-8b2b-758663c4af47
6ba75082-77e4-408b-9e19-92595121cf43 | 01635986-98e3-432e-9f4e-0a88edba3d67
48d7ab6f-4a32-4306-b060-f0019aef1d11 | 99f4e91f-c05f-496c-a4a3-7b62f64ed6e1
Run Code Online (Sandbox Code Playgroud)
因此,如您所见,结果包含 6 个随机人,每个人都有自己的随机效用。
如前所述,我需要 2 个随机人,每人 3 个随机实用程序。如何修复此查询?
这是示例(我使用md5而不是gen_random_uuid,但想法相同):
t=# with
person as (select md5(random()::text) from generate_series(1,2,1))
, utility as (select md5(random()::text) from generate_series(1,3,1))
select
person.md5, utility.md5
from person
join utility on true
;
md5 | md5
----------------------------------+----------------------------------
74df2447c58a1595e0a8458d1142e2e0 | 3703e2004a1494e6dd74cd51f4dd029e
74df2447c58a1595e0a8458d1142e2e0 | a1f7d74adc1ff3a49533204071e00f82
74df2447c58a1595e0a8458d1142e2e0 | 4f32029c29eee254d9c97045d06bcdf5
48a56953721f04752b325c332e26a5ed | 3703e2004a1494e6dd74cd51f4dd029e
48a56953721f04752b325c332e26a5ed | a1f7d74adc1ff3a49533204071e00f82
48a56953721f04752b325c332e26a5ed | 4f32029c29eee254d9c97045d06bcdf5
(6 rows)
Run Code Online (Sandbox Code Playgroud)
我是根据做的
我需要 2 个随机人员,每人 3 个随机实用程序
不在之前的声明中
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |