INSERT INTO SELECT WHERE,检查重复条目

INSERT INTO SELECT WHERE, checking for duplicated entries

我有一个下面建模的 INSERT INTO SELECT 查询,它可以正常工作。未包括但我想包括的是一种检查 INSERT INTO 数据是否已存在于 wa_research table 中的方法。

INSERT INTO wa_research C 
            (field1, 
             field2, 
             field3, 
             field4, 
             field5, 
             field6, 
             field7, 
             field8, 
             field9, 
             field10) 
SELECT A.field1, 
       A.field2, 
       A.field3, 
       A.field4, 
       A.field5, 
       A.field6, 
       A.field7, 
       A.field8, 
       A.field9, 
       A.field10 
FROM   wa_tmp_listed A 
       LEFT JOIN wa_list B 
              ON A.field2 = B.field2 
WHERE  B.field2 IS NULL 

我想在插入 wa_research 之前检查并跳过 wa_research 中具有 C.field1C.field2C.field3 组合的行table.

我想我可以用额外的 JOIN 来做到这一点,所以如果你有建议或例子 and/or 指导我扩展 JOIN 的类型,我期待这样做会有帮助。

您可以在 WHERE 子句中添加条件并将 NOT EXIST 与子查询一起使用:

INSERT INTO wa_research C (field1, field2, field3, field4, field5,
                           field6, field7, field8, field9, field10)
SELECT A.field1, A.field2, A.field3, A.field4, A.field5,
                 A.field6, A.field7, A.field8, A.field9, A.field10
FROM wa_tmp_listed A
LEFT JOIN wa_list B ON A.field2 = B.field2
WHERE B.field2 IS NULL
  AND NOT EXISTS(SELECT *
                 FROM wa_research CC
                 WHERE CC.field1 = A.field1
                   AND CC.field2 = A.field2
                   AND CC.field3 = A.field3)