sql - 将具有重复值的数据插入 Postgresql
问题描述
我需要在 postgresql 中插入数据集。
INSERT INTO table_subject_topics_exams (name_of_subject, section, topic, subtopic)
VALUES ('Algebra', 'Mathematics', 'Progressions', 'Number Sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Arithmetic Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Arithmetic Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Arithmetic Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Arithmetic Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Geometric Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Geometric Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Geometric Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Geometric Progression');
问题是请求中有很多重复的值。由于结果数据库应该涉及
('Algebra', 'Mathematics', 'Progressions', 'Number sequences'),
('Algebra', 'Mathematics', 'Progressions', 'Arithmetic Progression'),
('Algebra', 'Mathematics', 'Progressions', 'Geometric Progression');
如果这个数据集在数据库中,或者什么都没有。我应该如何进行查询?
附言
表格是:
CREATE TABLE public.table_subject_topics_exams
(
ids_of_subject_section integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
name_of_subject character varying(50) COLLATE pg_catalog."default" NOT NULL,
section character varying(50) COLLATE pg_catalog."default",
topic character varying(50) COLLATE pg_catalog."default" NOT NULL,
subtopic character varying(50) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT table_subject_topics_exams_pkey PRIMARY KEY (ids_of_subject_section)
)
解决方案
如果您不想插入重复项,请添加唯一索引或约束:
CREATE UNIQUE INDEX unq_table_subject_topics_exams_3 ON table_subject_topics_exams(name_of_subject, section, topic, subtopic);
如果您希望您insert
的非重复值成功,请添加:
ON CONFLICT DO NOTHING
作为INSERT
.
这是一个 db<>fiddle。
推荐阅读
- powershell - IRegisteredTask::RunEx 不工作,并且没有日志?
- node.js - 如何将 2 个日期传递给 req 参数以查找 2 个日期之间的数据
- powershell - 如何在 PDF 文件中搜索并使用 powershell 移动它们
- reactjs - 反应不立即显示当前状态
- graph - 为什么 Grakn 在关系上使用名词语义而不是动词?
- sql - 给定多个键的组合,在树中找到最佳匹配
- php - 返回行以及数组值的选项
- visual-studio-code - vs代码上的乳胶文件在保存时不会自动编译
- vba - 访问表单 - 查找表中的组合框,将查找值文本更新为 LookupID - 没有代码告诉它
- c - 使用c中的指针对数组求和