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

Pho*_*nic 3 php mysql phpmyadmin

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

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

INSERT INTO table1
SELECT *
FROM table2
WHERE table2.importId NOT IN 
(
    SELECT importId 
    FROM table1 
);
Run Code Online (Sandbox Code Playgroud)

仅当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
);
Run Code Online (Sandbox Code Playgroud)

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

我在phpmyadmin BTW中使用MYSQL.

Kar*_*sad 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 
);
Run Code Online (Sandbox Code Playgroud)

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

INSERT INTO table1
SELECT *
FROM table2
WHERE table2.importId NOT IN 
(
    SELECT importId 
    FROM table1 
) GROUP BY (table2.importId);
Run Code Online (Sandbox Code Playgroud)