大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
oracle 数据库多字段去重
方法介绍:distinct 关键字、group by 、row_number ()over(partition by 列 order by 列 desc)
我的需求是:根据某几列去重 查询出去重后的全部信息。最后我选择的是第三种方法。
我的想法:我想找出一种更简单的方法去 实现去重查询。越直接越好。
表结构&&内容
1、distinct 关键字的用法:distinct 关键字后面的字段组合去重 distinct 必须
select distinct id from test
结果 ;根据id 去重
select distinct id,name from test
结果:根据id和name 组合去重(类似于 id || name 这样去重)
2、group by 分组去重
select id,name from test group by id,name
结果:根据id,name 组合去重
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;
去重例子:根据 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
结果:
我的需求是:根据某几列去重 查询出去重后的全部信息。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/207454.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...