Postgresql 如何在postgres中克隆或复制同一表中的记录?

Postgresql 如何在postgres中克隆或复制同一表中的记录?,postgresql,copy,clone,crud,records,Postgresql,Copy,Clone,Crud,Records,如何通过创建临时表在PostgreSQL中克隆或复制同一表中的记录 尝试将一个表中的记录克隆到名称已更改的同一个表中(这基本上是该表中的复合键)。进行了一些研究,得出了一个逻辑: 创建临时表 将记录复制到其中 更新临时表中的记录 将其复制回原始表 创建临时临时表,如从原始文件中选择*,其中NAME='joe' 更新临时集合NAME='john'其中NAME='joe' 插入原始文件,从NAME='john'处的临时文件中选择* 我想知道是否有较短的方法来完成它。您可以在一个INSERT和SELE

如何通过创建临时表在PostgreSQL中克隆或复制同一表中的记录


尝试将一个表中的记录克隆到名称已更改的同一个表中(这基本上是该表中的复合键)。

进行了一些研究,得出了一个逻辑:

  • 创建临时表
  • 将记录复制到其中
  • 更新临时表中的记录
  • 将其复制回原始表
  • 创建临时临时表,如从原始文件中选择*,其中NAME='joe'

    更新临时集合NAME='john'其中NAME='joe'

    插入原始文件,从NAME='john'处的临时文件中选择*


    我想知道是否有较短的方法来完成它。

    您可以在一个
    INSERT
    SELECT
    组合中完成所有操作

    i、 e.假设您有以下表格定义和数据填充:

    create table original
    (
      id serial,
      name text,
      location text
    );
    
    INSERT INTO original (name, location)
    VALUES ('joe', 'London'),
           ('james', 'Munich');
    
    然后您可以
    INSERT
    执行您正在谈论的开关类型,而无需使用
    TEMP TABLE
    ,如下所示:

    INSERT INTO original (name, location)
    SELECT 'john', location
    FROM original
    WHERE name = 'joe';
    
    这是一个例子

    这也应该更快(尽管对于微小的数据集,从绝对时间来看可能不会太快),因为它只执行一次
    INSERT
    SELECT
    ,而不是额外的
    SELECT
    CREATE TABLE
    UPDATE