MySQL如何消除重复行
这篇文章给大家分享的是有关MySQL如何消除重复行的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
10多年的巴彦淖尔网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整巴彦淖尔建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“巴彦淖尔网站设计”,“巴彦淖尔网站推广”以来,每个客户项目都认真落实执行。
sql语句
/* MySQL 消除重复行的一些方法 ---Chu Minfei ---2010-08-12 22:49:44.660 --引用转载请注明出处:http://blog.csdn.NET/feixianxxx */ ----------------全部字段重复------------------------ --1使用表替换来删除重复项 create table test_1(id int,value int); insert test_1 select 1,2 union all select 1,2 union all select 2,3; --建立一个和源表结构一样的空的临时表 create table tmp like test_1; --向临时表插入不重复的记录 insert tmp select distinct * from test_1; --删除原表 drop table test_1; --更改临时表名为目标表 rename table tmp to test_1; --显示 mysql> select * from test_1; +------+-------+ | id | value | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ --2.添加auto_increment属性列(这个方法只能用于MyISAM或者BDB引擎的表) create table test_1(id int,value int) engine=MyISAM; insert test_1 select 1,2 union all select 1,2 union all select 2,3; alter table test_1 add id2 int not null auto_increment, add primary key(id,value,id2); select * from test_1; +----+-------+-----+ | id | value | id2 | +----+-------+-----+ | 1 | 2 | 1 | | 1 | 2 | 2 | | 2 | 3 | 1 | +----+-------+-----+ delete from test_1 where id2<>1; alter table test_1 drop id2; select * from test_1; +----+-------+ | id | value | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ -------------------部分字段重复--------------------- --1.加索引的方式 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; Alter IGNORE table test_2 add primary key(id); select * from test_2; +----+-------+ | id | value | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ 我们可以看到 1 3 这条记录消失了 我们这里也可以使用Unique约束 因为有可能列中有NULL值,但是这里NULL就可以多个了.. --2.联合表删除 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; delete A from test_2 a join (select MAX(value) as v ,ID from test_2 group by id) b on a.id=b.id and a.value<>b.v; select * from test_2; +------+-------+ | id | value | +------+-------+ | 1 | 3 | | 2 | 3 | +------+-------+ --3.使用Increment_auto也可以就是上面全部字段去重的第二个方法 --4.容易错误的方法 --有些朋友可能会想到子查询的方法,我们来试验一下 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; delete a from test_2 a where exists(select * from test_2 where a.id=id and a.value感谢各位的阅读!关于“MySQL如何消除重复行”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
本文题目:MySQL如何消除重复行
链接分享:http://cdiso.cn/article/geocss.html