去除表中重復行數據,可能大家立馬就想到的是用 DISINTCT 關鍵字,但 DISINTCT 只能是去除表中所有列都相同的行,若碰到需要去除表中多個字段重復的行(即:部份相同,部份不相同),那么該如何做呢?我通過多年數據庫編寫經驗,整理了如下方法,供大家參考
去除表中重復行數據,可能大家立馬就想到的是用DISINTCT關鍵字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多個字段重復的行(即:部份相同,部份不相同),那么該如何做呢?我通過多年數據庫編寫經驗,整理了如下方法,供大家參考和使用。
方法1:適用于返回較少字段
select F1,F2,F3,MAX(F4) FROM TABLENAME GROUP BY F1,F2,F3
方法2:適用于返回行所有字段,需指定不相同的字段
select * FROM TABLENAME T where F4=(select MAX(F4) from TABLENAME where T.F1=F1 and T.F2=F2 and T.F3=F3)
方法3:適用于返回行所有字段,需指定不相同的字段【找出需要去除的行】
SELECT T1.* FROM TABLENAME AS T1,(SELECT F1,F2,MAX(F3) AS F3 FROM TABLENAME GROUP BY F1,F2 HAVING COUNT(*)>1) AS T2
WHERE T1.F3 http://www.zuowenjun.cn/post/2014/08/02/10.html
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com