您好,欢迎访问一九零五行业门户网

SQL语句技巧之去除重复行

去除表中重复行数据,可能大家立马就想到的是用 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 and t1.f1=t2.f1 and t1.f2=t2.f2
http://www.zuowenjun.cn/post/2014/08/02/10.html
其它类似信息

推荐信息