Oracle 查询结果去重保留一项
首先因为需要查询很多字段,也就排除了使用distinct的可能性。
1.1 原始sql
select finalSql.*from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11
1.2 查询结果
很显然存在重复项
1.3 查询总数
2.1 修改sql
select finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码,count(*) as 次数from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11group by finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码order by 次数 desc
2.2 查询结果:
我是根据手机号进行分组的,很显然,这里存在很多的垃圾数据,我们需要将这些相同的数据只保留一条
2.3 查询总的记录数
3.1 因为返回结果并不需要“count(*)” 这个字段,因此在最外层再加一层查询,改进sql如下
select finalSql2.SMS_CONTENT,finalSql2.短信发出类型_批量发出,finalSql2.短信接收方姓名,finalSql2.短信接受方手机号,finalSql2.业务对象ID,finalSql2.区分码from (select finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码,count(*) as 次数from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11group by finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码order by 次数 desc) finalsql2
3.2 查询结果
3.3 查询总数
可见总数与第二步一致,并未缺少数据。
总结,因水平问题,在此只考虑最终查询结果符合要求,并未考虑性能、耗时等其他因素,如有需要,后期再做打算。
如有问题,欢迎大家斧正。
转载于:https://www.cnblogs.com/luxd/p/6382963.html
Oracle 查询结果去重保留一项相关推荐
- 【转贴】Oracle查询重复数据与删除重复记录方法
Oracle查询重复数据与删除重复记录方法 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons ...
- oracle 查的数据去重复数据,Oracle查询和过滤重复数据
对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s where s.as_side = ...
- oracle 查询日期最大值,sql语句查询每天数据中的最大值
案例: 创建天气小时表和天气日期表 create table dbo.T_WeatherStreetDataHourly ( ID bigint identity(1, 1), DDATETIME d ...
- oracle中sum和count可以嵌套吗_【分享吧】Oracle查询转换
前言 "查询转换"是Oracle解析SQL语句中重要的步骤.其原理是Oracle在解析时通过对原有SQL的等价改写,以达到较高执行效率的方式. 上图展示了SQL的执行过程,当客户提 ...
- oracle查询属主下对象,SQL优化
Oracle Index Merge 与 and_equal 的变迁 June 8, 2010 and_equal是Oracle支持的一种特定操作,可以将多个单列索引进行合并(Index Merge) ...
- Oracle查询数据表数据很少却很慢
Oracle查询数据表数据很少却很慢(查询空表很很耗时) 有一个表的数据我要去看一下到底数据是什么样子的,所以我就 select * from tableName 这个表.但是执行了90多秒后,没有任 ...
- Oracle查询语句及运用语句整理
基于很久没用到Oracle了最近有点怀念,看了很多博客至此没有看到满意的故此整理,当然这是基础的另外迪卡尔集及函数会后期码上,初学Oracle数据库的人都会经常在一些书籍中或者视频课程中提到几个常用的 ...
- Oracle查询字段以外的内容,Oracle查询字段内容为非数字的记录
今天在一张3W多记录的表里查非数字的异常数据~数据库太水,记录一发,因为2.5使用人员误输入为2..5.... select t.routecardlist_id,trim(translate(RTR ...
- oracle 多条件去重,Oracle数据去重
Oracle数据去重保留一条 多个条件分组 delete from M_BASEPRICE_0719_CC m where (m.brand_code,m.supplier_code,m.part_c ...
最新文章
- python数据分析基础 余本国_Python数据分析基础
- 关于Django中,实现序列化的几种不同方法
- 使用gui调试x86系统的汇编代码
- 大道至简读书笔记02
- Exynos4412 内核移植(二)—— 内核编译过程分析
- D5000工作站服务器型号,【戴尔Precision T5820参数】戴尔Precision T5820系列工作站参数-ZOL中关村在线...
- 【整理】Laravel中Eloquent ORM 关联关系的操作
- python3字典值重复统计_如何从字典列表中获取值-python 3.7.1[重复]
- 斐讯K2 A6版SZU校园网刷机方法
- html实现图片轮播切换箭头,最简单jquery实现带左右箭头和数字焦点的图片轮播...
- 机器人操作空间轨迹规划 -- 姿态规划
- 计算机出现蓝屏怎么解决,教你电脑出现蓝屏是怎么回事
- Zcash中的signatures
- flutter-拨打电话功能
- 【ZJOI2017】仙人掌
- python colormap_Python colors.LinearSegmentedColormap方法代码示例
- python as f是什么意思_Python中 with open(file_abs,'r') as f: 的用法以及意义
- 大学生没有项目经验该怎么拿测开岗位的office?来看话梅怎么说
- docker privileged参数解释
- 简单了解------网络搭建