Oracle之如何组合去重

简介: Oracle之如何组合去重

今日份知识学习

今天接着昨天的文章来说,跟昨天我们要说的需求不太一样,今天主要来说如何组合去重,一起来讨论一下解决方案,学习一下吧。

具体讲解

我们经常会遇到针对一些组合数据进行去重的开发需求,比如这样的数据,user_table表中的有重复name,我们要将这些数据进行合并,并且进行去重操作。

首先,我们没有必要再拆分了,在之前文章中我们已经讲过如何拆分字符串数据了,本次就不再赘述了。

直接就按照顺序合并name字段吧。

看一下下面的SQL示例:

select listagg(name) with group(order by age) from user_table connect by level <= (select count(*) from user_table)

如此我们就得到了一个合并后的字符串。

去重

去重的操作有很多,今天就说一个笨方法,那就是先去重再进行组合操作。

select distinct name from user_table

完善之前已经写过的SQL:

select listagg(name) with group(order by name) from user_table connect by level <= (select count(*) from (select distinct name from user_table))

如此,得到的结果集也就不存在重复结果了。

其实还有另外一种方式,那就是wm_concat和distinct组合后的结果。

wm_concat 加 distinct

通过wm_concat函数加上distinct关键字进行聚合去重。

select wm_concat(distinct name) from user_table group by name

通过这个SQL,我们就可以得到一个去重的组合字符串了。

之前文章中就说过,wm_concat因为oracle版本的不同,返回的数据类型会不同,所以大家在用的时候要多试试。

总结

今天我们学习了如何对拆分的字符进行组合去重,在书写复杂SQL时常遇到的问题,在这篇文章中你学会了吗?

最近开始来学习Oracle数据库的一些知识,其中包含一些函数的使用,或者是特性的介绍讲解等,将会在系列文章内说到。

喜欢的可以关注一下专栏。

目录
打赏
0
相关文章
Oracle查询优化-处理排序空值
【1月更文挑战第3天】【1月更文挑战第8篇】在处理Oracle查询结果排序时,如果涉及到空值(null),Oracle提供了一些特定的语法来帮助您控制排序的顺序。
89 0
Oracle查询优化-根据条件取不同列的值排序
【1月更文挑战第3天】【1月更文挑战第9篇】有时排序的要求会比较复杂,比如,领导对工资在 1000 到 2000元之间的员工更感兴趣,于是要求工资在这个范围的员工要排在前面,以便优先查看。这种情况就不仅仅使用ORDER BY了。
187 0
oracle学习87-oracle之基本的过滤和排序数据之课后练习
oracle学习87-oracle之基本的过滤和排序数据之课后练习
102 0
Oracle中select语句过滤和排序数据
简要介绍Oracle中select语句过滤和排序数据,并附操作实例

相关课程

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等