在postgresql的同一个表中复制行记录
Posted
技术标签:
【中文标题】在postgresql的同一个表中复制行记录【英文标题】:Duplicate a row record in same table in postgresql 【发布时间】:2016-11-18 04:56:12 【问题描述】:我想在同一个表中复制一条行记录,但对某些列值进行了修改。我知道我可以使用以下脚本复制行记录。
INSERT INTO table_name(
column_name1, column_name2, column_name3 ....
)
SELECT column_name1, column_name2, column_name3 ....
FROM table_name WHERE id=1;
但它会复制整行。对于修改,我还需要添加更新脚本。
所以我的问题是,有没有更简单的方法来处理我的场景。 由于我正在工作的表有大约 40 列,所以我认为这种方式不可行。
欢迎任何新想法。
提前致谢。
【问题讨论】:
您要更改哪些列以及要使用哪些值? 例如我要在其中设置“记录号重复...”的备注列 您没有提供足够的信息。I want create a duplicate but different
非常模糊请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
@Juan 每当您在同一个表中复制一行时,至少主键/列应该不同。所以我的意思是说,在同一个表中复制一行时,我们如何更新该主键。
首先您创建一个列SERIAL
这是自动数字并为您创建下一个序列。然后在您的INSERT
中不包含它。字段名称或值和数据库句柄都不是你的
【参考方案1】:
直接在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;
【讨论】:
以上是关于在postgresql的同一个表中复制行记录的主要内容,如果未能解决你的问题,请参考以下文章