去重方法:1、利用distinct关键字去重,语法“SELECT DISTINCT 字段名 FROM 表名;”;2、利用窗口函数row_number () over()去重;3、利用“group by”子句去重,语法“select 字段名 from 表名 group by 字段名;”;4、利用rowid进行伪列去重。

本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。
业务场景
需要查询某数据,由于需要三张表关联查询,查询结果如下:

原始SQL语句
SELECT D.ORDER_NUM AS "申请单号" , D.CREATE_TIME , D.EMP_NAME AS "申请人", (SELECT extractvalue(t1.row_data,'/root/row/FI13_wasteName') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "废料名称", (SELECT extractvalue(t1.row_data,'/root/row/FI13_units') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "单位", (SELECT extractvalue(t1.row_data,'/root/row/FI13_estimate') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "预估数量", (SELECT extractvalue(t1.row_data,'/root/row/FI13_stockRemoval') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "累计出库数量", (SELECT extractvalue(t1.row_data,'/root/row/FI13_receivingTime') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdCGYTX' ) AS "收购方收货时间", (SELECT extractvalue(t2.row_data,'/root/row/FI13_collectionTime') FROM dat_table_row t2 WHERE d.document_id = t2.document_id AND t2.table_id = 'dynamicRowsIdPTSJSKSJ' ) AS "实际收款时间" FROM dat_document d, dat_table_row dtr WHERE d.form_name ='FI14' AND d.document_id =dtr.document_id AND (D.DOCUMENT_STATUS != 'deleted' OR D.DOCUMENT_STATUS IS NULL ) --AND TO_CHAR(d.create_time,'yyyy-MM-dd') BETWEEN '2025-01-01' AND '2025-03-26' AND d.order_num = 'FI1420250708002' --FI1420250708002 ORDER BY d.CREATE_TIME DESC;
方法1:distinct去重
SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的。
DISTINCT语句的语法如下:
SELECT DISTINCT column_1,
column_2,
...
FROM
table_name;示例:
SELECT D.ORDER_NUM AS "申请单号" , D.CREATE_TIME , D.EMP_NAME AS "申请人", (SELECT extractvalue(t1.row_data,'/root/row/FI13_wasteName') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "废料名称", (SELECT extractvalue(t1.row_data,'/root/row/FI13_units') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "单位", (SELECT extractvalue(t1.row_data,'/root/row/FI13_estimate') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "预估数量", (SELECT extractvalue(t1.row_data,'/root/row/FI13_stockRemoval') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdPTFLXX' ) AS "累计出库数量", (SELECT extractvalue(t1.row_data,'/root/row/FI13_receivingTime') FROM dat_table_row t1 WHERE d.document_id = t1.document_id AND t1.table_id = 'dynamicRowsIdCGYTX' ) AS "收购方收货时间", (SELECT extractvalue(t2.row_data,'/root/row/FI13_collectionTime') FROM dat_table_row t2 WHERE d.document_id = t2.document_id AND t2.table_id = 'dynamicRowsIdPTSJSKSJ' ) AS "实际收款时间" FROM dat_document d, dat_table_row dtr WHERE d.form_name ='FI14' AND d.document_id =dtr.document_id AND (D.DOCUMENT_STATUS != 'deleted' OR D.DOCUMENT_STATUS IS NULL ) --AND TO_CHAR(d.create_time,'yyyy-MM-dd') BETWEEN '2025-01-01' AND '2025-03-26' AND d.order_num = 'FI1420250708002' --FI1420250708002 ORDER BY d.CREATE_TIME DESC;
注意:DISTINCT后面要跟ORDER BY的字段,Oracle先执行 DISTINCT去重后,再使用ORDER BY进行排序的。所以如果在ORDER BY需要排序的字段,没有在 distinct 后的字段中,自然会抛错。
报错信息如下:
一览妙笔
自媒体、编剧、营销人员写作工具
50
查看详情

方法2:row_number() over()
语法格式
select * from (select A.*, row_number() over(partition by A.name1 order by A.name12 desc) rn from A) where rn = 1
示例
select * from ( select d.order_num as "申请单号" , d.create_time , d.emp_name as "申请人", (select extractvalue(t1.row_data,'/root/row/FI13_wasteName') from dat_table_row t1 where d.document_id = t1.document_id and t1.table_id = 'dynamicRowsIdPTFLXX' ) as "废料名称", (select extractvalue(t1.row_data,'/root/row/FI13_units') from dat_table_row t1 where d.document_id = t1.document_id and t1.table_id = 'dynamicRowsIdPTFLXX' ) as "单位", (select extractvalue(t1.row_data,'/root/row/FI13_estimate') from dat_table_row t1 where d.document_id = t1.document_id and t1.table_id = 'dynamicRowsIdPTFLXX' ) as "预估数量", (select extractvalue(t1.row_data,'/root/row/FI13_stockRemoval') from dat_table_row t1 where d.document_id = t1.document_id and t1.table_id = 'dynamicRowsIdPTFLXX' ) as "累计出库数量", (select extractvalue(t1.row_data,'/root/row/FI13_receivingTime') from dat_table_row t1 where d.document_id = t1.document_id and t1.table_id = 'dynamicRowsIdCGYTX' ) as "收购方收货时间", (select extractvalue(t2.row_data,'/root/row/FI13_collectionTime') from dat_table_row t2 where d.document_id = t2.document_id and t2.table_id = 'dynamicRowsIdPTSJSKSJ' ) as "实际收款时间", row_number() over(partition by d.order_num order by d.create_time desc) rn from dat_document d, dat_table_row dtr where d.form_name ='FI14' and d.document_id =dtr.document_id and (d.document_status != 'deleted' or d.document_status is null ) --AND TO_CHAR(d.create_time,'yyyy-MM-dd') BETWEEN '2025-01-01' AND '2025-03-26' and d.order_num = 'FI1420250708002' --FI1420250708002 ) where rn = 1;
查询结果
方法3:group by
select 字段名 from 表名 group by 字段名;
方法4:利用rowid(伪列去重)
select id,name,age from test t1 where t1.rowid in (select min(rowid) from test t2 where t1.name=t2.name and t1.age=t2.age);
推荐教程:《Oracle教程》
以上就是oracle怎么进行数据去重的详细内容,更多请关注其它相关文章!
# 子句
# node.js seo
# 大石桥外包seo优化
# 网站建设业余培训
# 深圳网站优化搭建哪家好
# 网站运营推广方案企业
# 云南网站建设方案优化
# 宁波江北区微信营销推广
# 韩城市关键词seo排名优化
# 肥城网站推广排名
# 新浪网站seo分析
# oracle
# 如何设置
# 客户端
# 查询结果
# 怎么看
# 插入图片
# 收货
# 默认值
# 字段名
# 在这里
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现
Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改
《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局
iPhone 13 mini如何清理Safari缓存_iPhone 13 mini浏览器缓存清理方法
J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析
AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例
《盗墓笔记手游》技能介绍
Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析
被称为海蜈蚣的海洋动物是
mysql导入sql文件能分批导入吗_mysql分批次导入大sql文件的实用技巧
Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法
《长生:天机降世》火塔小怪大全
Magento 2 产品保存事件中安全更新属性的最佳实践
阿里云共享相册入口在哪
太平年在哪个平台播出
优化 WooCommerce 产品价格显示与自定义短代码集成
QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读
背部总是隐隐作痛怎么回事 背痛如何改善
Python项目中的条件导入:解决跨模块依赖问题
发布小红书怎么屏蔽粉丝?屏蔽粉丝能看到吗?
msn官方入口2025登录 msn官网2025直达首页入口
智慧团建活动报名入口 智慧团建活动报名入口手机端官网
CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现
电子白板帮助菜单使用指南
店铺如何做视频号推广?做视频号推广有用吗?
React应用中Commerce.js数据加载与状态管理最佳实践
服装短视频如何起号推广?服装短视频起号推广有什么要求?
汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口
12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧
《随手记》备份数据方法
TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法
《腾讯相册管家》注销账号方法
uc浏览器官网网页版使用 uc浏览器官网免费在线首页
如何查询国外邮政编码_国外邮政编码查询的多种有效途径
解决jQuery多计算器输入字段冲突的教程
CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程
以下哪一项是古代兵书三十六计中的计谋
Animex动漫社正版在线入口 Animex动漫社动漫官方观看网
批改网官网首页登录 批改网学生用户登录入口
解决Flex容器横向滚动内容截断与偏移问题
c++如何使用std::thread::join和detach_c++线程生命周期管理
C++如何实现单例模式_C++线程安全的单例模式写法
rabbitmq 持久化有什么缺点?
mysql怎么导入sql文件_mysql导入sql文件的方法与技巧
《淘票票》添加到苹果钱包教程
海棠阅读网页版_进入海棠网页版在线阅读中心
J*aScript类型数组_TypedArray使用
win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】
Excel如何快速合并单元格内容_Excel文本合并与函数操作技巧
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
2023-01-04
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。