mysql如何快速删除重复的数据

在mysql中去重,其实是一个很简单的事情,来看下面的例子:

mysql> DROP TABLE test;

Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE test

(

id  INT,

NAME VARCHAR(10)

);

Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO test VALUES(1,‘a1‘),(2,‘a2‘),(3,‘a3‘),(4,‘a4‘),(1,‘a1‘);

Query OK, 5 rows affected (0.00 sec)

Records: 5  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM test;

+------+------+

| id   | NAME |

+------+------+

|    1 | a1   |

|    2 | a2   |

|    3 | a3   |

|    4 | a4   |

|    1 | a1   |

+------+------+

5 rows in set (0.00 sec)

mysql> ALTER IGNORE TABLE test ADD UNIQUE INDEX idx_id_name (id,NAME);

Query OK, 5 rows affected, 1 warning (0.02 sec)

Records: 5  Duplicates: 1  Warnings: 1

mysql> SHOW WARNINGS;

+---------+------+-----------------------------------------------------------------+

| Level   | Code | Message                                                         |

+---------+------+-----------------------------------------------------------------+

| Warning | 1681 | ‘IGNORE‘ is deprecated and will be removed in a future release. |

+---------+------+-----------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> SELECT * FROM test;

+------+------+

| id   | NAME |

+------+------+

|    1 | a1   |

|    2 | a2   |

|    3 | a3   |

|    4 | a4   |

+------+------+

4 rows in set (0.00 sec)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 20:15:19

mysql如何快速删除重复的数据的相关文章

在SQL Server中快速删除重复记录

在SQL Server中快速删除重复记录 2006-07-17 21:53:15 分类: SQL Server 开发人员的噩梦——删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表

Innodb中mysql如何快速删除2T的大表

小漫画 来,先来看小漫画陶冶一下情操OK,这里就说了.假设,你有一个表erp,如果你直接进行下面的命令这个时候所有的mysql的相关进程都会停止,直到drop结束,mysql才会恢复执行.出现这个情况的原因就是因为,在drop table的时候,innodb维护了一个全局锁,drop完毕锁就释放了. 这意味着,如果在白天,访问量非常大的时候,如果你在不做任何处理措施的情况下,执行了删大表的命令,整个mysql就挂在那了,在删表期间,QPS会严重下滑,然后产品经理就来找你喝茶了.所以才有了漫画中的

MYSQL中delete删除多表数据

MYSQL中delete删除多表数据DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:1. delete from t1 where 条件2.delete t1 from t1 where 条件3. delete t1 from t1,t2 where 条件4.delete t1,t2 from t1,t2 where 条件前 3者是可行的,第4者不可行.也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除 关系,则

工作随笔——mysql子查询删除原表数据

最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb.* FROM froadbill.bill fb LEFT JOIN froadbill.refundinfo br ON br.billSeqNo = fb.seq_no WHERE br.billSeqNo IS NULL AND fb.create_time >='20150102000000

c++ 链表删除重复的数据

//List.h #include <iostream> typedef int dataType; struct Node{ Node():data(0),pNextNode(NULL){} //结点构造函数 dataType data; Node* pNextNode; }; class List{ private: Node *head; //作为链表唯一的头指针 int size; //链表长度 public: List(){head=new Node;size=0;} bool is

删除重复的数据(完全一致的重复)

MSsql 遗留的数据表中存在大量重复的记录,这些重复的数据的特点是:包括标识ID在内,所有数据列都一样,即完全一致的重复.如何去掉重复的记录,例如2条相同的数据 ,ID,各个字段都完全相同,无法在现有数据 上把这两条数据 区分开,需要可以分别开来的字段, 具体步骤如下: --1 添加临时标识字段 1 alter table [表名] 2 add idd varchar(50) --2 更新此字段,这样就能区分数据 1 update [表名] set idd=NEWID() --3删除重复的,通

ORACLE 删除重复的数据

内容转自:https://www.cnblogs.com/zfox2017/p/7676237.html 查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select Id from 表 group byId having count(Id) > 1  --(查找表中那个字段是重复的) select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 

mysql 多字段删除重复数据,保留最小id数据

直接上sql:方法一: delete from Route where id in (select b.id from (select * from Route a where id<>(select min(id) from Route where payment_type=0 and point_start=a.point_start and point_end=a.point_end) )b); 问题:一张route表.现在需要删除,payment_type=0 ,并且point_sta

mysql 中删除重复字段数据的方式

1.创建一张表 CREATE TABLE `user` ( `id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `address` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2.插入对应数据 INSERT INTO `user` VALUES ('1', 'zhangsan', '20'