我在尝试插入不需要重复的记录时遇到问题。这个问题不同于我在谷歌发现的任何解决方案,所以这里是:
我有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。
答案 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);