INSERT INTO SELECT WHERE,检查重复的条目

时间:2018-03-27 20:39:25

标签: mysql sql insert-into

我在下面建模INSERT INTO SELECT查询,它在功能上有效。什么没有包括,但我想包括一种方法来检查INSERT INTO表中是否已存在wa_research数据。

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之前检查并跳过C.field1表中C.field2C.field3wa_research组合的行。

我认为我可以使用额外的JOIN执行此操作,因此,如果您有关于扩展JOIN类型的建议或示例和/或指导我,我希望这样做会是有帮助的。

1 个答案:

答案 0 :(得分:0)

您可以向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)