mysql 删除重复数据_日常答疑|MySQL删除重复数据踩过得坑
生活随笔
收集整理的這篇文章主要介紹了
mysql 删除重复数据_日常答疑|MySQL删除重复数据踩过得坑
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題
群友提問(wèn):MySQL這樣刪除重復(fù)數(shù)據(jù)為啥不成功呢?
嚴(yán)小樣兒:安排!
咋一看,大家都說(shuō)where子句里面應(yīng)該使用極值函數(shù),加個(gè)max就對(duì)了,這么簡(jiǎn)單!#?大家想象中這樣寫(xiě)是對(duì)的,其實(shí)仍然是錯(cuò)的!delete?from?p1? where?idfrom?p1?b? where?p1.name=b.name);看到這里,很多經(jīng)常寫(xiě)sql但是又不太精通sql的人都會(huì)說(shuō):納尼??!尤其是經(jīng)常使用Oracle的同學(xué),更是百思不得其解!我在這里首先說(shuō)一句:MySQL這樣寫(xiě)的確是錯(cuò)的,Oracle這樣寫(xiě)應(yīng)該沒(méi)問(wèn)題!接下來(lái),我們來(lái)研究一番,到底如何以這樣的方式去重呢?!安排
(原始數(shù)據(jù))一、預(yù)覽數(shù)據(jù)
SELECT * FROM t; # 結(jié)果如上二、查重復(fù)值
SELECT * FROM t????WHERE?t.ID?SELECT?MAX(m.ID)FROM?t?m???????????? WHERE?m.NAME?=?t.NAME?AND?m.PRICE?=?t.PRICE);(重復(fù)值結(jié)果)
也就是說(shuō),利用上面的SQL語(yǔ)句可以查詢(xún)到哪些是重復(fù)數(shù)據(jù)。
然而,在它前面加個(gè)delete卻不能刪除重復(fù)值!
DELETE?FROM?t?????WHERE?t.ID?SELECT???????????????????????WHERE?m.NAME=t.NAME?AND?m.PRICE?= t.PRICE);(報(bào)錯(cuò)截圖)
三、正確答案
# 正確答案delete from t ????where?t.id?in?(select?r.*?from?(select?id?from?t? where t.id < (select max( m.id ) from t m where m.name = t.name???????????????????????????????????????????????????)???????????????????????????????? ?)?r??????????????????);??????????????????# 再次查看SELECT * FROM t;(最終結(jié)果)劃重點(diǎn)MySQL不能直接在查詢(xún)結(jié)果中進(jìn)行刪除操作,需要先建立一個(gè)臨時(shí)表。更多精彩
傳送門(mén)1:日常答疑|Python向量化操作、矩陣運(yùn)算傳送門(mén)2:日常答疑|Python處理時(shí)間格式并計(jì)算時(shí)間差值傳送門(mén)3:分組排序求前三?TopN問(wèn)題?一文教你MySQL各類(lèi)排序操作傳送門(mén)4:系列|七天PYTHON養(yǎng)成記之初識(shí)傳送門(mén)5:系列|七天PYTHON養(yǎng)成記之函數(shù)看完,讀完,要“在看” ↓↓↓
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的mysql 删除重复数据_日常答疑|MySQL删除重复数据踩过得坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Nginx的开启和关闭
- 下一篇: mysql api 连接池_Spring