Oracle查询表里的重复数据方法
select id from group by id having count(*) > 1
按照id分组并计数,某个id号那一组的数量超过1条则认为重复。
如何查询重复的数据
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1
PS:将上面的>号改为=号就可以查询出没有重复的数据了。
Oracle删除重复数据的SQL(删除所有):
删除重复数据的基本结构写法:
想要删除这些重复的数据,可以使用下面语句进行删除
delete from 表名 a where 字段1,字段2 in
(select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)
上面的SQL注意:语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。
建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
CREATE TABLE 临时表 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)
上面这句话就是建立了临时表,并将查询到的数据插入其中。
下面就可以进行这样的删除操作了:
delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 临时表);
Oracle删除重复数据的SQL(留下一条记录):
oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新的一条记录,我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。
使用ROWID查询重复数据:
select a.rowid,a.* from 表名 a
where a.rowid !=
(select max(b.rowid) from 表名 b
where a.字段1 = b.字段1 and
a.字段2 = b.字段2 )
括号中的SQL查询出rowid最大的记录,而外面就是查询出除了rowid最大之外的其他重复的数据了。
由此,我们要删除重复数据,只保留最新的一条数据,就可以这样写了:
删除重复数据(留下最大ROWID的一条)
delete from 表名 a where a.rowid !=
(select max(b.rowid) from 表名 b
where a.字段1 = b.字段1 and
a.字段2 = b.字段2 )
删除重复数据(留下最小ROWID的一条)
delete tab t where t.rowid > (
select min(t2.rowid) from tab t2 where t.col2 = t2.col2 and t.col8 = t2.col8
)
Oracle查询表里的重复数据方法的更多相关文章
- Oracle查询表里的重复数据方法:
一.背景 一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. 二.解决 select id from group by id having count ...
- mysql查询表里的重复数据方法:
INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11') delete from hk_test ...
- mysql查询表里的重复数据方法
select username,count(*) as count from hk_test group by username having count>1;
- Oracle查询和过滤重复数据
对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s and s.project_no ...
- Oracle查询及删除重复数据
1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 ) 2.删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录 ) ); 3.查找表中多余的重复记录 ...
- mysql查询表里的重复数据
先贴个简单的SQL语句 select username,count(*) as count from hk_test group by username having count>1; 使用详情 ...
- EF 查询视图出现重复数据
解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...
- Oracle 查询重复数据方法
查询某个字段存在重复数据的方法: select * from tablename where id in (select id from tablename group by id having co ...
- orcl数据库查询重复数据及删除重复数据方法
工作中,发现数据库表中有许多重复的数据,而这个时候老板需要统计表中有多少条数据时(不包含重复数据),只想说一句MMP,库中好几十万数据,肿么办,无奈只能自己在网上找语句,最终成功解救,下面是我一个实验 ...
随机推荐
- JS的 try catch 前端使用场景(尽管不多还是会用到)
try{ //正常执行 }catch(e/*你感觉会出错的 错误类型*/){ // 可能出现的意外 eg:用户自己操作失误 或者 函数少条件 不影响下面的函数执行 // 有时也会用在 比如 focus ...
- nginx 遇见问题与解决问题
如果你的安装目录为/usr/local/nginx,那么nginx的错误日志目录就是/usr/local/nginx/logs/error.log. 2.如果error.log不存在 就进入 # vi ...
- iOS之CALayer属性简介
/* CoreAnimation - CALayer.h Copyright (c) 2006-2017, Apple Inc. All rights reserved. */ #import < ...
- PAT甲级——A1091 Acute Stroke【30】
One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...
- Python学习day15-函数进阶(3)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- 第一周课堂笔记4th
1. if 对应着程序设计中的三种程序执行流程: 顺序结构,一条一条的按顺序执行,自上而下 选择结构,if else 单分支,双分支,多分支 循环结构 while for (后面学) 流程控制 ...
- 如何在easyui datagrid 中显示外键的值
1.需要在角色列表显示角色类别的值,而角色类别是外键,关联数据字典,明细见下图: 2.代码如下: columns: [[ { field: 'ck', checkbox: true, align: ' ...
- Tomcat Add and Remove 项目时提示 Project facet Java version 1.8 is not supported 错误
原因:项目的jdk和tomcat的jdk版本不同 将eclipse-preference-server-runtime environments 点击你要用的tomcat 点击 edit-jre选择和 ...
- Luogu P2101 命运石之门的选择(分治+搜索)
P2101 命运石之门的选择 题意 题目描述 在某一条不知名世界线的冈伦今天突然接到了一条\(dmail\),上面说世界线将会发生巨大变动,未来的他无论如何都无法扭转这种变动回到原来的世界线.而世界线 ...
- [bzoj2654] tree 最小生成树kruskal+二分
题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入格式 第一行V,E,need分别表示点数,边数和需要的白色边数.接下来E行, ...