如何重新插入所有现有字段但只更改postgresql中的一个字段数据?
how to re-insert all of the existing fields but only change one field data in postgresql?
我在一个 table 中有一堆数据,例如,假设我有一个包含四列的 table。
身份证、姓名、年龄、地址。
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。
insert into table(id,name,age,address) select 2,name,age,address from table
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);
我在一个 table 中有一堆数据,例如,假设我有一个包含四列的 table。
身份证、姓名、年龄、地址。
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。
insert into table(id,name,age,address) select 2,name,age,address from table
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);