這篇文章給大家分享的是有關MySQL如何消除重復行的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
10多年的巴彥淖爾網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整巴彥淖爾建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“巴彥淖爾網(wǎng)站設計”,“巴彥淖爾網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
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.聯(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也可以就是上面全部字段去重的第二個方法 --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如何消除重復行”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
分享名稱:MySQL如何消除重復行
本文地址:http://weahome.cn/article/geocss.html