gpt4 book ai didi

postgresql - Postgres 在循环中为选定列中的所有值插入 N 行

转载 作者:行者123 更新时间:2023-11-29 12:48:53 24 4
gpt4 key购买 nike

假设我将用户存储为

select * from users_t where user_name like 'ABC%';

id user_name
1 ABC1
2 ABC2
.. ..

现在我需要遍历所有 user_name 并将该数量的 INSERT 插入到不同的表 RECALLS_T。所有其他列都是我定义的硬编码常量。

假设下表,在 ID 上有一个名为 RECALLS_T_ID_SEQ 的序列:

id  created_by_user_name  field1   field2
1 ABC1 Const1 Const2
2 ABC2 Const1 Const2
.. .. .. ..

如何将这些插入到 Postgres 循环中?

其他问题另外,如果我需要为每个用户条目插入 X(比如 5)次召回怎么办?假设它不是 1:1 映射,而是 5:1,其中 5 是硬编码的循环编号。

最佳答案

您可以在insert语句中使用select:

insert into recalls_t (created_by_user_name, field1, field2)
select user_name, 'Const1', 'Const2'
from users_t
where user_name like 'ABC%';

使用函数 generate_series()users_t 中的每个条目插入多行。我添加了 step 列来说明这一点:

insert into recalls_t (created_by_user_name, field1, field2, step)
select user_name, 'Const1', 'Const2', step
from users_t
cross join generate_series(1, 3) as step
where user_name like 'ABC%'
returning *

id | created_by_user_name | field1 | field2 | step
----+----------------------+--------+--------+------
1 | ABC1 | Const1 | Const2 | 1
2 | ABC2 | Const1 | Const2 | 1
3 | ABC1 | Const1 | Const2 | 2
4 | ABC2 | Const1 | Const2 | 2
5 | ABC1 | Const1 | Const2 | 3
6 | ABC2 | Const1 | Const2 | 3
(6 rows)

现场演示 Db<>fiddle.

关于postgresql - Postgres 在循环中为选定列中的所有值插入 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com