微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – INSERT INTO WHERE NOT IN或NOT EXIST table origin有重复的地方

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

我有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.

解决方法:

您需要使用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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐