开窗函数          

     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 函数删除重复记录的更多相关文章

  1. MariaDB删除重复记录性能测试

    删除重复记录,只保留id最大的一条记录的性能测试 环境 测试表的id为是唯一的,或是自增的主键. mysql不能直接写循环,只能写在存储过程里. 存储过程usp_batch_insert的参数num_ ...

  2. Pandas dataframe 标记删除重复记录

    Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...

  3. SQL操作语句之查询及删除重复记录的方法

    delete from 表 where id not in(select min(id) from 表 group by name ) //删除重复名字的记录 删除之前请用语句 select * fr ...

  4. Pandas标记删除重复记录

    Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...

  5. 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 ...

  6. mysql 删除重复记录语句

    mysql 根据条件删除重复记录 只保留最小id的重复数据 DELETEFROM newsWHERE news_id IN ( SELECT a.news_id FROM ( SELECT news_ ...

  7. sql查询重复记录、删除重复记录方法大全

    查找所有重复标题的记录:SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORD ...

  8. mysql 数据表中查找、删除重复记录

    为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...

  9. [SQL]查询及删除重复记录的SQL语句

    一:查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select ...

随机推荐

  1. ASP.NET+ashx+jQuery动态添加删除表格

    aspx: <script src="../script/jquery-1.4.4.min.js" type="text/javascript" lang ...

  2. Java动态调用webService,axis2动态调用webService

    Java动态调用webService axis2动态调用webService >>>>>>>>>>>>>>>& ...

  3. SELECT [Code] ,[AlarmID] ,[ItemName] ,[isDeleted] ,[Remark] FROM [LjlData].[dbo].[T_BaseDetail] union select 0--

    SELECT  [id]       ,[AlarmID]       ,[ItemName]       ,[isDeleted]       ,[Remark]   FROM [LjlData]. ...

  4. .net+easyui系列--验证框

    1.允许从 0 到 10个字符 <input id="vv" class="easyui-validatebox" data-options=" ...

  5. java 反射,注解,泛型,内省(高级知识点)

     Java反射 1.Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs    取得任何一个已知名称的class的内部信息, 包括 ...

  6. Css3 兼容新旧浏览器

    想想10年前用 IE6,火狐,遨游,谷歌等浏览器学习css时,那叫一个艰苦,各种hack各种抓耳挠腮,不是margin塌陷就是元素飞了... 当前借着css3这个东风,如果各大浏览器厂商能统一一下,也 ...

  7. [Excel] C#DataToExcel帮助类 (转载)

    点击下载 DataToExcel.rar 看下面代码吧 /// <summary> /// 类说明:DataToExcel /// 编 码 人:苏飞 /// 联系方式:361983679 ...

  8. Delphi OO

    深入Delphi编程(OOP) 日期:2007年11月9日 作者:左轻侯 人气: 2595 查看:[大字体 中字体 小字体] 刚刚接触的Delphi的朋友,可能最感兴趣的就是它丰富.强大的VCL(可视 ...

  9. excel取值

    1.获取excel表格中的数据的表达式“&(A-Z)” 2.excel表格取值时,如果遇到表达式中要包含引号的,两个引号表示一个引号,因为取值的时候已经用了一对引号了. ="||&q ...

  10. Java设计模式(学习整理)---命令模式

    设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...