MySQL 处理重复数据篇
防止表中出现重复数据
在MySQL数据表中设置指定的字段为PRIMARY KEY(主键)或者UNIQUE(唯一)索引保证数据的唯一性。
设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示:
1 2 3 4 5 6 7 | CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sexCHAR(10), PRIMARY KEY (last_name, first_name) ); |
INSERT IGNOREINTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
用了INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:
mysql> INSERT IGNORE INTO person_tbl(last_name, first_name)
->VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
REPLACE INTO into如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。
UNIQUE(last_name, first_name)
查询重复记录
select user_name,count(*) as count fromuser_table group by user_name having count>1;
select * from people
where peopleId in (select peopleId from peoplegroup by peopleId having count(peopleId) > 1)
统计重复数据
统计表中 first_name 和 last_name的重复记录数:
1 2 3 4 5 | mysql> SELECT COUNT(*) as repetitions,last_name, first_name ->FROM person_tbl ->GROUP BY last_name, first_name ->HAVING repetitions > 1; |
转载请注明:IT运维空间 » Mysql » mysql快速学习处理重复数据篇(十五)
发表评论