【问题标题】:Postgresql insert if not exists ON CONFLICT IGNORE not workingPostgresql 插入如果不存在 ON CONFLICT IGNORE 不工作
【发布时间】:2021-11-13 07:23:08
【问题描述】:

我有一个 postgres sql:

        cur.execute(f"""INSERT INTO patients_patient (patient_id, patient_name) VALUES
                  (1,'Jane'),(2,'John')""")

我的问题是如果数据已经存在,如何让它不插入?

我尝试了冲突忽略:

        cur.execute(f"""INSERT INTO patients_patient (patient_id, patient_name) VALUES
                  (1,'Jane'),(2,'John') ON CONFLICT IGNORE""")

但不工作。

有朋友可以帮忙吗?

【问题讨论】:

标签: sql postgresql sql-insert


【解决方案1】:

您可以使用手动检查查询插入数据:

WITH ins AS (
  SELECT * FROM (VALUES (1,'Jane'),(2,'John')) AS t(patient_id, patient_name)
)
insert into patients_patient  (patient_id, patient_name)
select t1.patient_id, t1.patient_name from ins t1
left join patients_patient t2 on t2.patient_id = t1.patient_id 
where t2.patient_id is null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 2015-01-20
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多