在PostgreSQL中复制同一表中的行记录

9

我希望能在同一张表中复制一条记录,但需要对某些列的值进行修改。我知道可以使用以下脚本来复制一条记录。

INSERT INTO table_name( 
column_name1, column_name2, column_name3 ....
)
SELECT column_name1, column_name2, column_name3 ....
FROM table_name WHERE id=1;

但这会复制整行。为了修改,我还需要添加更新脚本。
所以我的问题是,是否有更简单的方法来处理我的情况。 因为我正在使用的表大约有40个列,所以我认为这种方式不可行。
欢迎任何新想法。
提前致谢。

你想要修改哪些列,使用哪些值? - Tim Biegeleisen
例如,我想在“备注”列中设置“记录重复编号...” - Suniel
您没有提供足够的信息。"我想创建一个副本但不同"非常模糊。请阅读如何提问这里是一个很好的地方开始,学习如何提高问题质量并获得更好的答案。 - Juan Carlos Oropeza
@Juan 在同一张表中复制一行时,至少主键/列应该不同。所以我的意思是,在同一张表中复制一行时,我们如何更新主键。 - Suniel
首先,您需要创建一个名为SERIAL的列,它是自动编号的,并为您创建下一个序列。然后在您的INSERT语句中,不需要包括该列。无论是字段名称还是值以及数据库句柄都不需要。 - Juan Carlos Oropeza
1个回答

25

可以直接在SELECT语句中更改列的值,无需进行额外的更新操作,就像以下示例一样。

INSERT INTO table_name( 
column_name1, column_name2, column_name3 ....
)
SELECT column_name1, 
       'New string value of column 2', 
       column_name3,
       ......
       ......
       1234 as new_val_of_col_25,
       column_name26,
       ......
FROM table_name WHERE id=1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接