如何重新插入所有现有字段但只更改postgresql中的一个字段数据?

时间:2015-01-20 09:56:02

标签: sql postgresql

我在一个表中有大量数据,例如假设我有一个包含四列的表。

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。

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);