mysql - 按两列查找和删除重复行

标签 mysql sql indexing duplicate-removal

我阅读了所有相关的重复问题/答案,我发现这是最相关的答案:

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/

相关文章:

php - Mysql按: to skip zeros to end of list排序

php - 按事件对数据库中的项目进行分组

sql - T-SQL 中的 XPath 选择实体

python - 了解 Numpy 多维数组索引

python - 在 Pandas 中的特定值之前获取 n 行

python - 输入数组相等时索引矩阵元素

mysql - 从 mysql 表中选择加权随机分布

php - 如何使用php从mysql日期时间中删除重复的日期

sql - 大查询 : How to get top 20 correlations in a table?

php - 如何在PHPExcel报表中连接数组中的数据