oracle字符串自身去重,oracle怎么去重查询

eab8a71e3a26b6d8f049d5e9f2d61b95.png

oracle去重查询的方法是:

oracle 数据库多字段去重

方法介绍:distinct 关键字、group by、row_number ()over(partition by 列 order by 列 desc)

我的需求是:根据某几列去重 查询出去重后的全部信息。最后我选择的是第三种方法。

我的想法:我想找出一种更简单的方法去 实现去重查询。越直接越好。

表结构&&内容

4cbfdd4eddbabfdd01f66babb88aa594.png

1、distinct 关键字的用法:distinct 关键字后面的字段组合去重 distinct 必须

select distinct id from test

结果 ;根据id 去重

select distinct id,name from test

结果:根据id和name 组合去重(类似于id || name这样去重)

ddc5539039c51c3093c9ecc31a68c30e.png

2、group by 分组去重

select id,name from test group by id,name

结果:根据id,name 组合去重

19ae27ada5b63c4e8e8ea456d1dba9ea.png

3、row_number ()over(partition by 列 order by 列 asc | desc)方法

3.1 row_number() over(order by column asc)先对列column按照升序,再为每条记录返回一个序列号

3.2 row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据根据column2 升序排列

注:order by 必须得有

例子select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a;

186685d9dc0a54a51ffec69237dc5c86.png

去重例子:根据 id和sex 去重

select id,name,sex from(

select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a )

where su=1

结果:

61087ae6b7a8dba7c8f43da498adf3e3.png

我的需求是:根据某几列去重 查询出去重后的全部信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值