oracle 查的数据去重复数据,Oracle查询和过滤重复数据

本文介绍了在Oracle数据库中如何查询和删除重复数据的方法。首先通过查询找出重复的记录,然后利用DELETE语句结合子查询保留特定条件下的唯一数据,以实现数据去重。示例查询和删除语句针对特定字段进行操作。

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

对数据库某些意外情况,引起的重复数据,如何处理呢?

----------------查重复:

select *

from satisfaction_survey s

where s.as_side = 0

and s.project_no in (select ss.project_no

from satisfaction_survey ss

where ss.as_side = 0

group by ss.project_no

having count(*) > 1)

order by s.project_no, s.submit_time

思路:从预先选出的数据中(s.as_side = 0),根据特定字段(s.project_no),判断是否存在(count(*) > 1,符合条件的数据不止一条)重复数据

当然,也可以根据多个字段(in 前面的字段,用个括号括起来,in select子句的返回字段对应改变)判断是否存在重复数据

----------------------去重复:

delete from satisfaction_survey s

where s.as_side = 0

and(s.project_no/*, to_char(s.submit_time, 'yyyy-mm-dd')*/) in

(select ss.project_no/*, to_char(ss.submit_time, 'yyyy-mm-dd') */

from satisfaction_survey ss

where ss.as_side=0//根据自己实际情况,确定子句(清楚每个sql的结果集很重要)

group by ss.project_no/*, to_char(ss.submit_time, 'yyyy-mm-dd')*/

having count(*) > 1)

and rowid not in

(select max(rowid) from satisfaction_survey where as_side=0 group by project_no/*, to_char(submit_time, 'yyyy-mm-dd')*/ having count(*) > 1)

思路:在删除全部重复数据时,保留一条(and rowid not in)符合自己需求的数据

这里为了保证程序的健壮性,可以在查询数据时防止查出多条数据,在返回结果外面加一层,只取一条数据:

select *

from (SELECT ROW_NUMBER() OVER(ORDER BY s.submit_time) 插入时间, s.*

FROM satisfaction_survey s

where s.project_no = 'WW-PM-2017-RP-449'

and s.employee_no = 'BF1019589'

and s.as_side = 0

--and s.mark is not null)

and s.mark is null)

where 插入时间 = 1

这里根据时间排序,取符合条件的第一条

Oracle查询表里的重复数据方法:

一.背景 一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. 二.解决 select id from group by id having count ...

Oracle查询表里的重复数据方法

select id from group by id having count(*) > 1 按照id分组并计数,某个id号那一组的数量超过1条则认为重复. 如何查询重复的数据 select 字 ...

Oracle查询及删除重复数据

1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 ) 2.删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录 ) ); 3.查找表中多余的重复记录 ...

sql 查询重复数据,删除重复数据,过滤重复数据

select * from (SELECT titleid,count(titleid) c FROM [DragonGuoShi].[dbo].[ArticleInfo] group by titl ...

Elasticsearch去重查询/过滤重复数据(聚合)

带家好,我是马儿,这次来讲一下最近遇到的一个问题 我司某个环境的es中被导入了重复数据,导致查询的时候会出现一些重复数据,所以要我们几个开发想一些解决方案,我们聊了聊,相出了下面一些方案: 1.从源头 ...

mysql查询表里的重复数据方法:

INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11') delete from hk_test  ...

EF 查询视图出现重复数据

解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...

手把手教你如何用java8新特性将List中按指定属性排序,过滤重复数据

在java中常常会遇到这样一个问题,在实际应用中,总会碰到对List排序并过滤重复的问题,如果List中放的只是简单的String类型过滤so easy,但是实际应用中并不会这么easy,往往List ...

scrapy过滤重复数据和增量爬取

原文链接 前言 这篇笔记基于上上篇笔记的---,而这篇又涉及redis,所以又先熟悉了下redis,记录了下 ...

随机推荐

OCJP(1Z0-851) 模拟题分析(六)over

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...

Python进程、线程、协程

进程和线程的解释 进程(process)和线程(thread)是操作系统的基本概念,计算机的核心是CPU,它承担了所有的计算任务: 单个CPU一次只能运行一个任务,代表单个CPU总是运行一个进程,其他 ...

Swift学习

Swift 中文教程(一)基础数据类型 基础类型 虽然Swift是一个为开发iOS和OS X app设计的全新编程语言,但是Swift的很多特性还是跟和Objective-C相似. Swift也提供了 ...

4517: [Sdoi2016]排列计数

Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

【题解】Luogu P3674 小清新人渣的本愿

原题传送门 这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了) 看见无修改,那么这题应该是莫队 维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过 第一种操作 ...

对java web开发的理解

写完后发现自己好像很多都不知道,管它的,只要自己了解就行了,以后有时间再把这个完善一下吧 感觉就是三层架构翻来覆去的用,以这个为基础不停的扩展,前提是数据量一定要大,不然这些扩展就没啥意思 这是数据量 ...

Mybatis学习(三)————— 映射文件详解

前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...

System V 与 POSIX 简介与对比

当我们在 Linux 系统中进行进程间通信时,例如信号量,消息队列,共享内存等方式,会发现有System V以及POSIX两种类型.今天我们就来简单介绍下它们. POSIX: POSIX(Portab ...

springadmin环境搭建

一路走过来都是坑,记录下来以后避免在踩 springboot版本信息2.0.3 admin服务端 maven配置信息

从cpu负载到jstack分析线程状态

示例代码: public class CPULockTest { private static Object lock1 = new Object(); private static Object l ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值