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数据库的一些知识,其中包含一些函数的使用,或者是特性的介绍讲解等,将会在系列文章内说到。

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

目录
相关文章
|
6月前
|
Oracle 关系型数据库
Oracle查询优化-遍历字符串
【2月更文挑战第3天】【2月更文挑战第6篇】Oracle查询优化-遍历字符串
61 0
|
Oracle 关系型数据库
oracle学习88-oracle之基本的过滤和排序数据
oracle学习88-oracle之基本的过滤和排序数据
121 0
oracle学习88-oracle之基本的过滤和排序数据
|
Oracle 关系型数据库
oracle学习87-oracle之基本的过滤和排序数据之课后练习
oracle学习87-oracle之基本的过滤和排序数据之课后练习
79 0
|
Oracle 关系型数据库
Oracle学习(二):过滤和排序
本文主要讲Oracle过滤和排序
102 0
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 CDN
|
Oracle 关系型数据库
|
Oracle 关系型数据库