我在一个表中有大量数据,例如假设我有一个包含四列的表。
ID,姓名,年龄,地址等。
id
保持不变,但所有其他字段都会更改。即它看起来像这样。
id name age address
1 steve 20 test address 1
1 mark 21 test address 2
现在我希望拥有相同的数据集但只更改id,例如,所有内容都保持不变,但只有id更改为如下所示:
id name age address
1 steve 20 test address 1
1 mark 21 test address 2
2 steve 20 test address 1
2 mark 21 test address 2
但是我不想一次插入一个字段,因为我有100个字段,这样做会浪费很多时间。
所以我的问题是如何在Postgres中尽可能轻松地完成这项工作?
我忘了提到默认情况下没有设置其他字段,我想从特定的字段id复制数据,所以一般来说应该是这样的。首先,我想从特定的id中获取所有字段,然后再次插入这些字段,但现在使用新的id,例如2。
答案 0 :(得分:1)
insert into table(id,name,age,address) select 2,name,age,address from table
答案 1 :(得分:1)
create table list (id int,name text,age int,address text);
insert into list values (1,'steve',20,'AAAAAAAAA');
insert into list values (1,'mark',21,'BBBBBBBBB');
现在为 INSERT 操作创建一个函数:
create or replace function ins_list(_updateID int ,_getID int) returns void as
$$
-- _updateID : - the new ID that you want to insert(ex. 2)
-- _getID : - the ID that you need to search to get values from name,age,address (ex.1)
insert into list (id,name,age,address) select _updateID,name,age,address from list where id = _getID
$$
language sql
要插入你只需要像
一样调用select ins_list(2,1);