gpt4 book ai didi

sql - 只向 PostgreSQL 表添加非重复值

转载 作者:行者123 更新时间:2023-12-04 15:29:03 24 4
gpt4 key购买 nike

我想知道避免 PostgreSQL 数据库表内部重复的最佳实践是什么。表中的行相当于来自全天多次调用的第 3 方 API 的条目。

我只添加与 JSON 响应不重复的条目。 JSON 响应可以是数据库中超过 500 个对象,比方说:

[{
"unique_id": 1234,
"name": "A",
"wins": 1
},
{
"unique_id": 1235
"name": "B",
"wins": 1
},
...
];

问题是来自 API 的数据可能是我已经存储在数据库中的数据,当我再次查询第 3 方端点时,我不想拥有已经存储的数据插入再次添加 - 只有结果中的唯一对象。

而且我知道如何检查一个单独的对象是否作为一行存在,但是当我在第 3 方响应中有超过 500 个并且其中只有 50 个是唯一的时,对此合理的检查是什么在一个数据库事务中?

我很想去 SELECT * FROM table_name,将这些结果添加到 json 响应中,然后以这种方式删除重复项,但这似乎是一个非常多的开销处理。

如有任何帮助,我们将不胜感激。

最佳答案

一个简单的方法是声明一个引用表中相关列的唯一约束(或唯一索引,或主键)。您可以在 insert 查询中使用 on conflict do nothing 子句:

例子:

create table mytable(unique_id int, name text, wins int);
create unique index myidx on mytable(unique_id, name, wins);

insert into mytable (unique_id, name, wins)
values(1234, 'A', 1)
on conflict(unique_id, name, wins) do nothing;

关于sql - 只向 PostgreSQL 表添加非重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61642514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com