利用row_number over 函数删除重复记录
开窗函数
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行
SQL> create table a1(id int,flag1 char(10),flag2 char(10));
Table created.
SQL> select * from a1;
ID FLAG1 FLAG2
---------- ---------- ----------
1 a a1
1 a a2
1 b b1
1 b b2
SQL> delete from (select unique a.* from a1 a);
delete from (select unique a.* from a1 a)
*
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view
SQL> delete from (select * from (select unique a.* from a1 a));
delete from (select * from (select unique a.* from a1 a))
*
ERROR at line 1:
ORA-01752: cannot delete from view without exactly one key-preserved table
SQL> delete from (select * from a1 group by id,name);
delete from (select * from a1 group by id,name)
*
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view
SQL> select a.*,row_number() over(partition by id,flag1 order by id,flag1) as num from a1 a;
ID FLAG1 FLAG2 NUM
---------- ---------- ---------- ----------
1 a a1 1
1 a a2 2
1 b b1 1
1 b b2 2
SQL> delete from (select a.*,row_number() over(partition by id,flag1 order by id,flag1) as num from a1 a) where num>1;
delete from (select a.*,row_number() over(partition by id,flag1 order by id,flag1) as num from a1 a) where num>1
*
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view
SQL> (select a.*,
row_number() over(partition by id, flag1 order by id, flag1) as num
from a1 a) 2 3 ;
ID FLAG1 FLAG2 NUM
---------- ---------- ---------- ----------
1 a a1 1
1 a a2 2
1 b b1 1
1 b b2 2
SQL> delete from a1 where rowid in (select rowid
from (select a.*,
row_number() over(partition by id, flag1 order by id, flag1) as num
from a1 a)a
where num >= 2) 2 3 4 5
6 ;
2 rows deleted.
SQL> commit;
Commit complete.
SQL> select * from a1;
ID FLAG1 FLAG2
---------- ---------- ----------
1 a a1
1 b b1
利用row_number over 函数删除重复记录的更多相关文章
- MariaDB删除重复记录性能测试
删除重复记录,只保留id最大的一条记录的性能测试 环境 测试表的id为是唯一的,或是自增的主键. mysql不能直接写循环,只能写在存储过程里. 存储过程usp_batch_insert的参数num_ ...
- Pandas dataframe 标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- SQL操作语句之查询及删除重复记录的方法
delete from 表 where id not in(select min(id) from 表 group by name ) //删除重复名字的记录 删除之前请用语句 select * fr ...
- Pandas标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- mysql删除重复记录语句的方法
例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name ...
- mysql 删除重复记录语句
mysql 根据条件删除重复记录 只保留最小id的重复数据 DELETEFROM newsWHERE news_id IN ( SELECT a.news_id FROM ( SELECT news_ ...
- sql查询重复记录、删除重复记录方法大全
查找所有重复标题的记录:SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORD ...
- mysql 数据表中查找、删除重复记录
为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...
- [SQL]查询及删除重复记录的SQL语句
一:查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select ...
随机推荐
- WPF 格式化输出- IValueConverter接口的使用
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这 ...
- ui-router的使用
使用时需要ui中用ui-view指令指定 如: <div ui-view></div> 首先配置注册 ui-route var mainModule = angular.mod ...
- jquery mobile入门资料
由于项目中用到了,就去看了一下视频,然后进一步的找找资源,最后自己再总结一遍!(就是动手操作一遍,不论你感觉多简单,只有动手之后,你才有可能有收获) 当然如果你喜欢看文档可以到官网仔细研究,不过喜欢快 ...
- 《高性能js》读书笔记
第一章:加载和执行 .浏览器的JavaScript的引擎是编译器层的优化: .当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着 .主流浏览器都允许并行下载JS. .减 ...
- java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner)
package com.unmi; import java.io.*; import org.apache.tools.ant.*; import org.apache.tools.ant.taskd ...
- listview中button抢占焦点问题
解决办法Item xml 根节点添加 android:descendantFocusability="blocksDescendants" Button 设置 android:fo ...
- list集合练习一
package com.java.c.domain; public class Person { private String name; private int age; public Person ...
- 选取两个有序数组中最大的K个值,降序存入另一个数组中
原题: 假设有两个有序的整型数组int *a1, int *a2,长度分别为m和n.试用C语言写出一个函数选取两个数组中最大的K个值(K可能大于m+n)写到int *a3中,保持a3降序,并返回a3实 ...
- 图像载入 imread()[OpenCV 笔记4]
Mat imread( ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV ...
- VS2008/MFC —常用控件使用总结 转载
在公司培训期间,经理给了我们没人10个界面草图,让我们在VS2008下使用MFC设计,因为在经理的帮助和自己的努力下,终于在三天时间内完成,现在就根据在这三天 时间里所用到的控件做出如下总结: 1.D ...