Mysql查重去重操作


有這么一張表:

 

 

 里面的技術重復了2次,采購重復了一次。

使用如下語句:

select * from test GROUP BY name HAVING COUNT(*) >1

效果如下:

 

 可以看到返回的值與重復的次數不一樣。

select * from test where name in(select name from test GROUP BY name HAVING COUNT(name) >1);

使用這個語句,可以把所有name一樣的都返回。

效果如下:

 

 

select distinct name,code from test where name=0

使用上面的代碼,可以將name,code字段中重復的數據去除以后再返回,

效果如下:

 

 

select name,code from test where name=0 group by name

這個語句也是一樣的效果

SELECT * FROM test WHERE name IN (SELECT `name` from test GROUP BY `name` HAVING COUNT(1)>1) AND id NOT in (SELECT min(id) from test GROUP BY `name` HAVING count(1)>1)
SELECT * from test where id not in (SELECT dt.minno from (SELECT MIN(id) as minno from test GROUP BY name)dt)

刪除多余數據且只保留1條

delete from test where name in (SELECT t.name from (SELECT name from test GROUP BY name HAVING COUNT(1)>1)t) and id not in (SELECT dt.minno from (SELECT min(id) as minno from test GROUP BY name HAVING count(1)>1)dt)
DELETE FROM `test` WHERE id NOT IN(SELECT * FROM(SELECT id FROM `test` GROUP BY name)AS A)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM