部分重复字段的问题
前几天在这个帖子里问过这个问题。http://topic.csdn.net/u/20071126/18/b6bcc77e-6548-4fd2-884c-80fc7d27fdcd.html
由于没想清楚就匆忙结贴了。
实际上和我要的还是有出入的。
我先把问题和答案再贴一遍。
问题
-----------------------------------------------------
表中有三个字段
F1,F2,F3
记录之间F1和F2有可能重复,F3不会,
比如
F1 F2 F3
1 11 1
2 22 2
2 22 3
1 11 4
3 33 5
对于F1和F2重复的,我只想要一条,任何一条都可以。
比如结果为
1 11 1
2 22 2
3 33 5
如果用postgresql里的distinct on很好写,但是不知道标准的sql怎么写?不能用函数,不能用临时表,只有一条sql语句。
---------------------------------------------------------------------------------------
答案
----------------------------------------------------------
select f1,f2,max(f3) f3 from tb group by f1,f2
select f1,f2,min(f3) f3 from tb group by f1,f2
----------------------------------------------------------
由于我的问题没有问清楚,所以导致答案和需求有出入,实在抱歉。
我所举的例子,只有三个字段,不重复的字段只有一个,所以答案是没有问题的,但是实际上,我项目中所遇到的问题,不重复的字段并不是一个,而是多个,比如
F1 F2 F3 F4
1 11 1 4
2 22 2 3
2 22 3 2
1 11 4 1
3 33 5 5
这样的话,就不能使用
elect f1,f2,max(f3),max(f4) f3 from tb group by f1,f2
因为,虽然项目需求可以得到任何一条记录,但是前提是这些记录必须是同一行的记录,如果按照上面的写法,那么得到的F3,F4就有可能不是同一行的。
由于需要分页和排序,所以不能把记录都取出来再由程序处理。
由于没想清楚就匆忙结贴了。
实际上和我要的还是有出入的。
我先把问题和答案再贴一遍。
问题
-----------------------------------------------------
表中有三个字段
F1,F2,F3
记录之间F1和F2有可能重复,F3不会,
比如
F1 F2 F3
1 11 1
2 22 2
2 22 3
1 11 4
3 33 5
对于F1和F2重复的,我只想要一条,任何一条都可以。
比如结果为
1 11 1
2 22 2
3 33 5
如果用postgresql里的distinct on很好写,但是不知道标准的sql怎么写?不能用函数,不能用临时表,只有一条sql语句。
---------------------------------------------------------------------------------------
答案
----------------------------------------------------------
select f1,f2,max(f3) f3 from tb group by f1,f2
select f1,f2,min(f3) f3 from tb group by f1,f2
----------------------------------------------------------
由于我的问题没有问清楚,所以导致答案和需求有出入,实在抱歉。
我所举的例子,只有三个字段,不重复的字段只有一个,所以答案是没有问题的,但是实际上,我项目中所遇到的问题,不重复的字段并不是一个,而是多个,比如
F1 F2 F3 F4
1 11 1 4
2 22 2 3
2 22 3 2
1 11 4 1
3 33 5 5
这样的话,就不能使用
elect f1,f2,max(f3),max(f4) f3 from tb group by f1,f2
因为,虽然项目需求可以得到任何一条记录,但是前提是这些记录必须是同一行的记录,如果按照上面的写法,那么得到的F3,F4就有可能不是同一行的。
由于需要分页和排序,所以不能把记录都取出来再由程序处理。
...全文
相关推荐
数据库删除完全重复和部分关键字段重复的记录
重复记录分为两种,第一种是完全重复的记录,也就是所有字段均重复的记录,第二种是部分关键字段重复的记录,例如Name字段重复,而其它字段不一定重复或都重复。
Django 解决distinct无法去除重复数据的问题
今天需要使用Django查询一列的字段(不含重复),搞了一上午,发现这样的事情:如图: 得到的数据几乎是相等的,没有区别。 但是仔细看会发现:下面的数据比起上面的还是少了一个。 解决办法: django的distinct在使用之前必须先使用order_by方法排序,如图: 这样就完美解决了这个问题。 补充知识:Distinct和Group by去除重复字段记录 重复记录 有两个意义,一是完全重复的记录,也即所有字段均重复的记录 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、对于第一种重复,比较容易解决,使用 select distinct
oracle下如何删除重复数据的几种方法
oracle 数据库中重复的记录行的清理删除方法,总结了几种比较可行的方法路径并分析了方法的优劣
oracle中如何删除重复数据
oracle中如何删除重复数据,方便大家下载
易语言数据库检查重复字段模块源码
资源介绍:。录入数据库之前检测重复字段模块源码。资源作者:。资源界面:。资源下载:。


