MySQL中怎么处理重复数据
MySQL中怎么处理重复数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
防止表中出现重复数据
你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。
让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。
CREATETABLEperson_tbl(first_nameCHAR(20),last_nameCHAR(20),sexCHAR(10));
如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示:
CREATETABLEperson_tbl(first_nameCHAR(20)NOTNULL,last_nameCHAR(20)NOTNULL,sexCHAR(10),PRIMARYKEY(last_name,first_name));
如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。
INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
以下实例使用了INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:
mysql>INSERTIGNOREINTOperson_tbl(last_name,first_name)->VALUES('Jay','Thomas');QueryOK,1rowaffected(0.00sec)mysql>INSERTIGNOREINTOperson_tbl(last_name,first_name)->VALUES('Jay','Thomas');QueryOK,0rowsaffected(0.00sec)
INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。 而REPLACE INTO into如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。
另一种设置数据的唯一性方法是添加一个UNIQUE索引,如下所示:
CREATETABLEperson_tbl(first_nameCHAR(20)NOTNULL,last_nameCHAR(20)NOTNULL,sexCHAR(10)UNIQUE(last_name,first_name));
统计重复数据
以下我们将统计表中 first_name 和 last_name的重复记录数:
mysql>SELECTCOUNT(*)asrepetitions,last_name,first_name->FROMperson_tbl->GROUPBYlast_name,first_name->HAVINGrepetitions>1;
以上查询语句将返回 person_tbl 表中重复的记录数。 一般情况下,查询重复的值,请执行以下操作:
l 确定哪一列包含的值可能会重复。
l 在列选择列表使用COUNT(*)列出的那些列。
l 在GROUP BY子句中列出的列。
l HAVING子句设置重复数大于1。
过滤重复数据
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
mysql>SELECTDISTINCTlast_name,first_name->FROMperson_tbl;
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
mysql>SELECTlast_name,first_name->FROMperson_tbl->GROUPBY(last_name,first_name);
删除重复数据
如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:
mysql>CREATETABLEtmpSELECTlast_name,first_name,sex->FROMperson_tbl;->GROUPBY(last_name,first_name,sex);mysql>DROPTABLEperson_tbl;mysql>ALTERTABLEtmpRENAMETOperson_tbl;
当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:
mysql>ALTERIGNORETABLEperson_tbl->ADDPRIMARYKEY(last_name,first_name);
关于MySQL中怎么处理重复数据问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。