可以看到表中的value字段有重復(fù),如果想篩選去重,使用select distinct語句如下:
成都創(chuàng)新互聯(lián)專注于通河企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)。通河網(wǎng)站建設(shè)公司,為通河等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
得到結(jié)果會(huì)是
| value
| a
| b
| c
| e
| f
篩選去重是實(shí)現(xiàn)了,可是只有選中的value列顯示了出來,如果我想知道對(duì)應(yīng)的id呢?
嘗試一下把id字段加入sql語句,如下:
得到結(jié)果:
| value | id
| a | 1
| b | 2
| c | 3
| c | 4
| e | 5
| f | 5
更換一下sql語句中id和value的順序,如下:
得到結(jié)果:
| id |value
| 1 | a
| 2 | b
| 3 | c
| 4 | c
| 5 | e
| 5 | f
好像看明白它的作用結(jié)果了,只有id和value兩個(gè)字段同時(shí)重復(fù)時(shí),select distinct語句才會(huì)把它列入“去重”清單
所以能看到id為3和4的value雖然都是4,但由于select語句中寫了id字段,它也默認(rèn)會(huì)對(duì)id字段起效。
而且如果sql語句中把DISTINCT放到只想起效的字段前,那也是不行的....比如sql語句改為:
會(huì)提示sql報(bào)錯(cuò)。
那到底怎么樣能得到我想要的只對(duì)value字段內(nèi)容去重,顯示結(jié)果又能保留其他字段內(nèi)容呢....
找到的解決方法是使用group by函數(shù),sql語句如下:
得到結(jié)果:
| min(id) |value
| 1 | a
| 2 | b
| 3 | c
| 5 | e
| 5 | f
完成目標(biāo)了?!
如果把sql語句中的min()換成max()呢?
得到結(jié)果:
| min(id) |value
| 1 | a
| 2 | b
| 4 | c
| 5 | e
| 5 | f
也完成目標(biāo)了?!
同時(shí)比對(duì)兩次sql運(yùn)行結(jié)果可以發(fā)現(xiàn),
第一次使用min(id)時(shí),由于重復(fù)結(jié)果存在兩條而id最小的為為3,符合min(id)的篩選條件,所以結(jié)果中把id等于4的重復(fù)記錄刪除了。
第二次使用max(id)時(shí)結(jié)果中,也就把id等于3的重復(fù)記錄刪除了
可以推論到假如還存在一條id=5,value=c的記錄,使用max(id)時(shí)得到的結(jié)果里就會(huì)是5 c這條了。
再來嘗試一下,如果min()和max()用在value字段里呢:
得到結(jié)果:
| id |min(value)
| 1 | a
| 2 | b
| 3 | c
| 4 | c
| 5 | e
得到結(jié)果:
| id |min(value)
| 1 | a
| 2 | b
| 3 | c
| 4 | c
| 5 | f
再仔細(xì)想想,這種需求也只出現(xiàn)在不是那么care顯示結(jié)果中,非去重目標(biāo)字段的內(nèi)容時(shí)才能使用,如果需要指定這些字段的值,可能篩選條件就不是min()和max()那么簡單了....
以上。
不建議直接刪除,養(yǎng)成良好的習(xí)慣(刪除更麻煩),以下是將去重后的數(shù)據(jù)轉(zhuǎn)移到另一張表代碼:
Insert into 表名(列名)select distinct 列名 from 表名
你可以按照去重的思路,刪除重復(fù)數(shù)據(jù)
b. 方法:
☆根據(jù)dname分組,查找出deptno最小的。然后再查找deptno不包含剛才查出來的。這樣就查詢出了所有的重復(fù)數(shù)據(jù)(除了deptno最小的那行)
方法2
刪除重復(fù)的行
單個(gè)字段的如果會(huì)了,多個(gè)字段也非常簡單。就是將group by 的字段增加為你想要的即可。
此處只寫一個(gè),其他方法請仿照一個(gè)字段的寫即可。
查詢結(jié)果不含指定字段重復(fù)
2.表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),
3.查詢重復(fù)
4.1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來判斷
4.2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來判斷,只留有rowid最小的記錄
4.3、查找表中多余的重復(fù)記錄(多個(gè)字段)
4.4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有rowid最小的記錄
4.5、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄
4.6.消除一個(gè)字段的左邊的第一位:
4.7.消除一個(gè)字段的右邊的第一位:
4.8.假刪除表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄
查詢重復(fù)
MySQL 刪除重復(fù)數(shù)據(jù)
有些 MySQL 數(shù)據(jù)表中可能存在重復(fù)的記錄,有些情況我們允許重復(fù)數(shù)據(jù)的存在,但有時(shí)候我們也需要?jiǎng)h除這些重復(fù)的數(shù)據(jù)。
本章節(jié)我們將為大家介紹如何防止數(shù)據(jù)表出現(xiàn)重復(fù)數(shù)據(jù)及如何刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù)。
刪除重復(fù)數(shù)據(jù)
如果你想刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù),你可以使用以下的SQL語句:
from 樹懶學(xué)堂 - 一站式數(shù)據(jù)知識(shí)平臺(tái)
當(dāng)然你也可以在數(shù)據(jù)表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重復(fù)記錄。方法如下:
使用Group by column_name對(duì)目標(biāo)列分組,得到的結(jié)果就是去重的結(jié)果了。
如菜鳥上給出的例子,我們有如下表:
想要得出每個(gè)同學(xué)有幾條記錄:
擴(kuò)展:想要得出一共有幾位同學(xué):select count(*) from employee_tbl group by name;
意即:表里一共有幾種name
網(wǎng)站標(biāo)題:mysql怎么去重 mysql字符串去重
當(dāng)前網(wǎng)址:http://muchs.cn/article46/doccohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、營銷型網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、定制開發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)