我阅读了所有相关的重复问题/答案,我发现这是最相关的答案:
INSERT IGNORE INTO temp(MAILING_ID,REPORT_ID)
SELECT DISTINCT MAILING_ID,REPORT_IDFROM table_1
;
问题是我想删除 col1 和 col2 的重复项,但也想将 table_1 的所有其他字段包括到插入中。
我尝试以这种方式添加所有相关列:
INSERT IGNORE INTO temp(M_ID,MAILING_ID,REPORT_ID,
MAILING_NAME,VISIBILITY,EXPORTED) SELECT DISTINCT
M_ID,MAILING_ID,REPORT_ID,MAILING_NAME,VISIBILITY,
EXPORTED FROM table_1
;
M_ID(int,primary),MAILING_ID(int),REPORT_ID(int),
MAILING_NAME(varchar),VISIBILITY(varchar),EXPORTED(int)
但是它将所有行插入到临时文件中(包括重复行)
最佳答案
多列删除重复行最好的方法是最简单的方法:
添加一个 UNIQUE 索引:
ALTER IGNORE TABLE your_table ADD UNIQUE (field1,field2,field3);
上面的 IGNORE 确保只保留第一个找到的行,其余的被丢弃。
(如果您以后需要重复项和/或知道它们不会再次发生,您可以删除该索引)。
关于mysql - 按两列查找和删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340820/