這篇文章將為大家詳細(xì)講解有關(guān)MySQL怎么消除重復(fù)行,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、陽(yáng)原網(wǎng)站維護(hù)、網(wǎng)站推廣。
sql語(yǔ)句
/* MySQL 消除重復(fù)行的一些方法 ---Chu Minfei ---2010-08-12 22:49:44.660 --引用轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.NET/feixianxxx */ ----------------全部字段重復(fù)------------------------ --1使用表替換來(lái)刪除重復(fù)項(xiàng) create table test_1(id int,value int); insert test_1 select 1,2 union all select 1,2 union all select 2,3; --建立一個(gè)和源表結(jié)構(gòu)一樣的空的臨時(shí)表 create table tmp like test_1; --向臨時(shí)表插入不重復(fù)的記錄 insert tmp select distinct * from test_1; --刪除原表 drop table test_1; --更改臨時(shí)表名為目標(biāo)表 rename table tmp to test_1; --顯示 mysql> select * from test_1; +------+-------+ | id | value | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ --2.添加auto_increment屬性列(這個(gè)方法只能用于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 | +----+-------+ -------------------部分字段重復(fù)--------------------- --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約束 因?yàn)橛锌赡芰兄杏蠳ULL值,但是這里NULL就可以多個(gè)了.. --2.聯(lián)合表刪除 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也可以就是上面全部字段去重的第二個(gè)方法 --4.容易錯(cuò)誤的方法 --有些朋友可能會(huì)想到子查詢的方法,我們來(lái)試驗(yàn)一下 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關(guān)于“MySQL怎么消除重復(fù)行”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
文章名稱:MySQL怎么消除重復(fù)行
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/gpsgsd.html