INSERT INTO WHERE NOT IN或NOT EXIST表格原点有重复的地方

时间:2017-11-03 03:52:06

标签: php mysql phpmyadmin

我在尝试插入不需要重复的记录时遇到问题。这个问题不同于我在谷歌发现的任何解决方案,所以这里是:

我有TABLE1和TABLE2,我想将TABLE1中的记录插入TABLE2,所以我使用这个查询:

INSERT INTO table1
SELECT *
FROM table2
WHERE table2.importId NOT IN 
(
    SELECT importId 
    FROM table1 
);

仅当TABLE2保证不包含重复项importId时才有效。 因此,如果TABLE2有重复的importId,我想插入TABLE1,它不包含TABLE2中的importId。上面的脚本将继续插入记录,从而在TABLE1中创建重复的importId。

我已经尝试过:

INSERT INTO table1
SELECT *
FROM table2
WHERE NOT EXIST 
(
    SELECT importId 
    FROM table1
    WHERE table1.importId <> table2.importId
);

出现相同的结果!现在我不得不写另一个查询来删除重复项。那么有没有解决这个问题的方法呢?

我在phpmyadmin BTW中使用MYSQL。

1 个答案:

答案 0 :(得分:5)

您需要使用DISTINCT关键字,请参阅。 https://www.w3schools.com/sql/sql_distinct.asp

INSERT INTO table1
SELECT DISTINCT *
FROM table2
WHERE table2.importId NOT IN 
(
    SELECT importId 
    FROM table1 
);

应该是你想要的,但是如果你不需要只在一列上有重复项,我认为GROUP BY关键字将起作用。也许是这样的

INSERT INTO table1
SELECT *
FROM table2
WHERE table2.importId NOT IN 
(
    SELECT importId 
    FROM table1 
) GROUP BY (table2.importId);