当前位置: 首页 > 知识库问答 >
问题:

将数据从没有主键的表复制到具有主键的表格

楚鸿波
2023-03-14

我在Postgres中有两个表<code>foo

当我尝试使用此命令将数据从 foo 复制到 bar 时:

INSERT INTO bar
SELECT id, timestamp, updated_at
FROM foo

我得到一个错误:

错误:重复的键值违反了唯一约束“bar_pkey”
详细信息:键(id)=(1)已存在。

当表完全为空时,该错误怎么可能发生?在postgres中,将数据从一个没有主键的表复制到一个有主键的表格的正确过程是什么?


共有1个答案

江新
2023-03-14
匿名用户

验证bar是否真的为空:

select count(*)
from bar;

如果这不是问题所在,则<code>foo</code>有重复项:

select id
from foo
group by id
having count(*) > 1;

还有其他神秘的可能性,例如命名错误的约束(因此问题不是真正的id)或触发器。但是,我忽略了这些可能性。

如果希望每个foo有任意一行,可以使用< code>distinct on:

select distinct on (id) id, timestamp, updated_at
from foo
order by id;

 类似资料:
  • 问题内容: 我在使用Find()方法的行中得到以下异常(缺少主键) “表没有主键。” 我已经重新检查了数据库,所有主键列均已正确设置。 我的代码: 问题答案: 您需要在调用 Find* 之前设置 DataTable 对象的 PrimaryKey 属性。 ***

  • 问题内容: 我使用spring数据休息作为基础。但是当实体具有复合主键时,我不知道如何通过提供主键来获得实体。 河类: RiverPK课程: RiverDAO类: 然后,我可以通过调用get http:// localhost:8080 / river / 获取河流数据,还可以通过调用post http:// localhost:8080 / river / {river json} 为db创建新

  • 我使用spring数据rest作为CRUD。但是当实体具有复合主键时,我不知道如何通过给出主键来获得一个实体。 河流等级: RiverPK类: Riverdoo级: 然后我可以通过调用get http://localhost:8080/river/获取河流数据,还可以通过调用post http://localhost:8080/river/{river json}为db创建新的实体 river j

  • 问题内容: 我有一个这样的表格: 需要以以下形式返回,重复项: 我尝试这样做,但这会返回类似 而且我需要重复的内容,但是当然不起作用。 有任何想法吗?谢谢。 问题答案: 您需要汇总ID。如果仅需要其中之一的ID(例如,删除),则可以执行以下操作: 如果您想同时使用两个ID,并且知道不会超过2个,则可以执行以下操作: 如果您想要所有重复项及其ID,则必须使用派生表,如Nitin Midha的回答。

  • 我有一个名为的现有表。在这个表中,我有5列: persionId 人名 PMid 描述 Pamt 创建此表时,我将和设置为主键。 我现在想在主键中再包含一列——PMID。我如何编写一个语句来做到这一点?(表中已经有1000条记录了)

  • 问题内容: 我需要一个表来存储一些评分,在此表中,我有一个 综合索引(user_id,post_id) 和其他列来标识不同的评分系统。 在此表中,我没有 主键, 因为 主键 必须是唯一的,而INDEX不必是唯一的,就我而言,唯一性是一个问题。 例如我可以有 缺少PRIMARY KEY可能会导致性能问题?我的表结构好还是需要更改? 谢谢 问题答案: 几点: 听起来您只是在使用表的当前唯一特性,并将其