sql只根據某一字段去重,並保留其他字段


SQL只根據某一個字段去重並保留其他字段,要實現此需求的關鍵是用到兩個函數,分別為:group by 與 max()

group by的目的是分組從而達到去重的效果,max()的目的是取分組重復的字段中取出隨機的一條數據(比如說這里用的max()意思是取某一字段最大的,或者也可以用其他只能獲取一條數據的函數,這里要根據具體的需求來決定)

SQL寫法如下:

 比如表user中有字段:id、name、age

id name age
1 張三 22
2 李四 23
3 王五 22
4 馬六 24
5 徐七 23
我們想要查根據age去重的一個數據,並且name隨機取一個id最大的即可,期望結果如下:

id name age
3 王五 22
4 馬六 24
5 徐七 23
 SQL為:

select id,name,age from user a where id in ( select max(id) as id from user b group by age )

或者用exists:

select id,name,age from user a where exists ( select id from ( select max(id) as id from user group by age ) b where a.id = b.id )


免責聲明!

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



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