oracle 查询及删除表中重复数据
create table test1(
id number,
name varchar2(20)
);
insert into test1 values(1,'jack');
insert into test1 values(2,'jack');
insert into test1 values(3,'peter');
insert into test1 values(4,'red');
insert into test1 values(5,'green');
insert into test1 values(6,'green');

一 查询表中重复数据
1. 使用exists
select a.* from test1 a where exists (
select name from
( select name ,count(*)
from test1
group by name
having count(*)>1
) b
where a.name = b.name
);

2 join on
select a. * from test1 a
join (
select name ,count(*) from test1
group by name
having count(*)>1
) b
on a.name = b.name;

3 in
select a.name from test1 a
where a.name in
(
select name from test1
group by name
having count(*)>1
);

4 使用rowid 查询得到重复记录里,第一条插入记录后面的记录
select * from test1 a where rowid != (select min(rowid) from test1 b where b.name = a.name);

5 使用rowid查询得到重复记录里,最后一条记录之前插入的记录
select a.* from test1 a where rowid !=(select max(rowid) from test1 b where a.name=b.name);

6 使用rowid 查询得到 不重复的记录和重复记录里最后插入的一条记录
select a.* from test1 a where rowid =(select max(rowid) from test1 b where a.name=b.name);

7 使用rowid 查询得到不重复的记录和重复记录里最先插入的记录
select * from test1 a where rowid = (select min(rowid) from test1 b where b.name = a.name);

删除 所有重复不保留任何一条
delete from test1 a where exists ( select name from (select name ,count(*) from test1 group by name having count(*)>1) b where a.name = b.name);
delete from test1 a where a.name in (select name from test1 group by name having count(*)>1);
删除重复记录里,第一条重复记录后面插入的记录
delete from test1 a where rowid !=(select min(rowid) from test1 b where b.name = a.name);
删除先前插入的重复记录,保留最后插入的重复记录
delete from test1 a where rowid !=(select max(rowid) from test1 b where a.name=b.name);

oracle 查询及删除表中重复数据的更多相关文章
- 查询和删除表中重复数据sql语句
1.查询表中重复数据.select * from peoplewhere peopleId in (select peopleId from people group by ...
- mysql 查询及 删除表中重复数据
CREATE TABLE `test` ( `id` INT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NULL DEFAULT NULL, `a ...
- ROWID面试题-删除表中重复数据(重复数据保留一个)
/* ROWID是行ID,通过它一定可以定位到r任意一行的数据记录 ROWID DNAME DEPTNO LOC ------------------ ------------------------ ...
- sqlite 删除表中重复数据(亲测可用)
例子:表名 Paper .通过字段PaperID查找重复数据. 1 --查询某表中重复的数据 select * from Paper group by PaperID having co ...
- sql记录去重(SQL查询或者删除表中重复记录)
.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...
- MySQL 数据库删除表中重复数据
采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据.完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法. N.B. 删除数据表的重复数据时,请先备份 ...
- Oracle通过ROWID删除表中重复记录
-- 1 通过ROWID删除T1表里重复的记录 SELECT ROWID,A,B--DELETE FROM T1WHERE ROWID IN ( SELECT RD FROM ( ...
- oracle查询、删除表中相同的数据
delete FROM tablename a WHERE rowid > ( SELECT min(rowid) FROM tablename b WHERE b.id = a.id and ...
- SQL Server中删除表中重复数据
方法一:利用游标,但要注意主字段或标识列 declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max beg ...
随机推荐
- IdentityServer4实现单点登录统一认证
什么是单点登录统一认证:假如某公司旗下有10个网站(比如各种管理网站:人事系统啊,财务系统啊,业绩系统啊等),我是该公司一管理员或者用户,按照传统网站模式是这样:我打开A网站 输入账号密码 然后进入到 ...
- WM_QUERYENDSESSION与WM_ENDSESSION
此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 首先XP系统和Vista以后的系统,这两个消息的处理方式是不同的. XP系统 系统发送WM_QUERYEND ...
- JSON Path表达式
JSON Path 描述 $ 表示根元素 @ 表示当前节点 . 表示子节点 .. 选择所有符合条件的节点 * 所有节点 [] 迭代器标识,如数组下标 [,] 支持迭代器中多选 [start:en ...
- python-webdriver库之Keys
在使用webdriver时,有些时候我们需要做一些键盘上特殊键的操作,例如backspace,ctrl,shift等,这个时候就需要用到webdriver.common.keys.Keys方法来进行 ...
- django自定义rbac权限组件(二级菜单)
一.目录结构 二.表结构设计 model.py from django.db import models # Create your models here. class Menu(models.Mo ...
- linux系统安全及应用——PAM安全认证
一.PAM认证模块介绍 PAM认证模块,叫做可插拔式的认证模块.一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换.PAM提供了对所有服务进行 ...
- requests库和urllib包对比
python中有多种库可以用来处理http请求,比如python的原生库:urllib包.requests类库.urllib和urllib2是相互独立的模块,python3.0以上把urllib和ur ...
- 蓝牙4.0BLE抓包(二) – 广播包解析
版权声明:本文为博主原创文章,转载请注明作者和出处. 作者:强光手电[艾克姆科技-无线事业部] 在使用EN-Dongle捕获和解析广播包之前,我们先了解一下BLE报文的结构,之后,再对捕获的广播 ...
- fiddler使用——配置抓取https,出现提示“禁用解密”“单击配置”
自己在设置fiddler抓https的时候,浏览器总是提示:此证书不受信任:中午没午睡下午一直昏沉沉的,弄了好久,终于想起来是证书的问题:度娘有个不错的答案,这里分享一下!给以后有相同问题的朋友,也同 ...
- SpeechVoiceSpeakFlags枚举类型的详细解释
http://blog.csdn.net/zhou_xw6511/article/details/8313528