oracle中sql单列去重的方法,Oracle 单列去重 显示单行所有列数据

本文介绍了一种使用row_number() over(partition by)方法在MySQL中去除字段a的重复数据,并获取去重后的完整行数据的有效方案。通过创建临时表并应用窗口函数row_number()进行分组排序,最终筛选出唯一数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:test_table 表中有 a,b,c 三个字段,求根据字段a 去除重复数据,得到去重后的整行数据

根据mysql的经验尝试以下方法均失败

1、使用 distinct 关键字 (oracle查询数据中,不允许非 distinct 标注字段 )

select count(distinct a),a,b,c from test_table;

940712e3378f3f587eee486612e2faa7.png

2、使用 group by (oracle查询数据中不允许非分组字段)

select a,b,c from test_table group by a;

a06a2e7862bb832d09b887360e1678f0.png

解决方案:使用row_number() over( partition by) 方法分组排序

with temp as (

select a,b,c from test_table

)

select a,b,c from (

select a,b,c,row_number() over (partition by a order by rownum) row_no from temp

) where row_no = 1

ps:   with temp as() 括号内的内容 就是查询的sql 结果包含重复数据

row_number() over(partition by 需要检索重复的列 order by 排序的列名)  别名 row_no  ,如果分组存在多条相同值,row_no 从1开始递增,筛选 row_no = 1 ,就取到了只出现一次的数据

参考:https://blog.youkuaiyun.com/u014481096/article/details/82144519

原文:https://www.cnblogs.com/hellohero55/p/12000299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值