【问题标题】:Deleting duplicate records from table从表中删除重复记录
【发布时间】:2016-01-07 03:44:12
【问题描述】:

我想从 mysql 表中删除重复记录。它执行得很好,但它显示“没有受影响的行”?

DELETE n1 
FROM dummyuser1  n1, dummyuser1 n2
WHERE  n1.id > n2.id and  n1.name = n2.name; 

上述查询正在执行,但显示“没有受影响的行”。

【问题讨论】:

  • 能否提供您的样本数据
  • 请详细说明您的情况
  • 显示您的表结构以及您希望在哪个字段基础上使您的数据独一无二。
  • @Maruthi Marripudi:如果您想删除名称列中的重复性并希望保持最低的 id,那么您的查询就可以了……如果您创建了一个 sqlfiddle,那么有人可以检查是什么问题.. .
  • 嗨,我在这个表中创建了 dummyuser1 表,我制作了 2 行具有相同 id、name、salary 列的副本,但我不想看到。例如:第一行 1,maruthi,30000 和第二行是 2, dummyname,20000 和第一行和第二行所有列重复两次,我不想那样,我希望两个副本行都是唯一的...... ...

标签: mysql


【解决方案1】:

最简单的方法是添加一个唯一索引,它将删除所有重复的行,例如:

alter ignore table dummyuser  
add unique index idx_uk_dummyuser (name);

它可以帮助您在未来避免重复表中的重复

【讨论】:

  • 添加唯一索引不会删除重复条目。如果有重复,它将失败
  • @EJP 从 MySQL 5.7.4 开始,ALTER TABLE 的 IGNORE 子句被删除,使用它会产生错误。
  • @EJP 我找到了类似的答案stackoverflow.com/a/3312066/4275342 / 我的表类型是 MyISAM 和它的作品
  • @EJP:由于 MegaTron 使用了 alter ignore 语法,所以它会自动删除重复记录,只保留第一条记录,并创建唯一索引。我为答案 +1。
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
相关资源
最近更新 更多