去除表中重復行數據,可能大家立馬就想到的是用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.* FROMTABLENAMEAS T1,(SELECT F1,F2,MAX(F3) AS F3 FROMTABLENAMEGROUP BYF1,F2HAVING COUNT(*)>1) AS T2WHERE T1.F3<T2.F3 AND T1.F1=T2.F1 AND T1.F2=T2.F2原文地址:http://www.zuowenjun.cn/post/2014/08/02/10.html
新聞熱點
疑難解答