热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle字符过滤中文,oracle过滤某个字段重复记录,只获取一条记录

一,首先想到:1,关键字distinct2,groupby3,MAX,MIN这样的函数被称为聚集

一,首先想到:

1,关键字distinct

2,group by

3,MAX,MIN这样的函数被称为聚集函数,和GROUP搭配起来用

但均无法实现,执行结果如下

举例:

表名:OffsiteOutreachTeam_List

字段:CORPADDLEVEL(获取该字段不重复数据),CHANNELCODE, CORPNAME, BELONGORGNAME

执行结果:

1,distinct

--一个字段有效,多个字段无效

select distinct CORPADDLEVEL from OffsiteOutreachTeam_List;

select distinct CORPADDLEVEL ,CHANNELCODE, CORPNAME, BELONGORGNAME from OffsiteOutreachTeam_List;

注意:当除了过滤字段外的其他所有字段内容相同时,才可以起到过滤效果。

2,group by

--只能查询一个字段

select CORPADDLEVEL from OffsiteOutreachTeam_List group by CORPADDLEVEL; --报错 not a group by expression

select CORPADDLEVEL,CHANNELCODE, CORPNAME, BELONGORGNAME from OffsiteOutreachTeam_List group by CORPADDLEVEL;

3,MAX,MIN这样的函数被称为聚集函数,和GROUP搭配起来用

--只能过滤两个字段

SELECT MIN(CHANNELCODE), CORPADDLEVEL FROM OffsiteOutreachTeam_List GROUP BY CORPADDLEVEL --报错 not a group by expression

SELECT MIN(CHANNELCODE), CORPADDLEVEL,CORPNAME, BELONGORGNAME FROM OffsiteOutreachTeam_List GROUP BY CORPADDLEVEL

二,正确方式

1,关键字 row_number() OVER(PARTITION BY 使用子查询对重复数据按照123...排序,再条件需要为1的。

select  CORPADDLEVEL ,CHANNELCODE, CORPNAME, BELONGORGNAME

from(select ol.CORPADDLEVEL,ol.CHANNELCODE, ol.CORPNAME, ol.BELONGORGNAME, row_number() OVER(PARTITION BY ol.CORPADDLEVEL ORDER BY ol.CORPADDLEVEL) ds

from OffsiteOutreachTeam_List ol

where ol.CORPADDLEVEL is not null)

where ds = 1

2,使用min group by进行子查询,获取唯一字段,再查询所有字段。

select  CORPADDLEVEL ,CHANNELCODE, CORPNAME, BELONGORGNAME from OffsiteOutreachTeam_List where CHANNELCODE in

(select min(CHANNELCODE) from OffsiteOutreachTeam_List group by CORPADDLEVEL) order by CORPADDLEVEL;



推荐阅读
author-avatar
王延霞之歌
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有