我想在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
到目前为止没有运气
答案 0 :(得分:2)
在使用SQL时,“循环”思维几乎总是错误的。您需要考虑集合以及如何操作它们。 SQL语句准确地描述了这一点:如何检索集合以及如何处理该行集合。
在这种情况下,您可以使用SELECT语句作为INSERT的源:
insert into profit (user_id, value)
select id, 23
from users;
请注意,在这种情况下,您没有values
子句。