如何使用Postgressql循环插入其他表中具有ID的新行

时间:2019-10-11 07:45:06

标签: sql postgresql sql-insert

我想在profit表中为db中存在的每个用户插入新行:select id * from users。用户数量是动态的,因此我需要全部获取它们。我需要在postgres sql中进行一些循环。我自己解决这个问题。就像这样:

select id * from users as user_ids

for (each userId in user_ids) {
 insert into profit (user_id, value) values (userId, 23);
}

我可以向您寻求帮助吗?我已经问了很多问题:

Insert new row with data computed from other rows

postgresSQL insert multiple rows, of id returned from select queries

到目前为止没有运气

1 个答案:

答案 0 :(得分:2)

在使用SQL时,“循环”思维几乎总是错误的。您需要考虑集合以及如何操作它们。 SQL语句准确地描述了这一点:如何检索集合以及如何处理该行集合。

在这种情况下,您可以使用SELECT语句作为INSERT的源:

insert into profit (user_id, value) 
select id, 23
from users;

请注意,在这种情况下,您没有values子句。