zoukankan      html  css  js  c++  java
  • Oracle(00):删除重复记录

    查询某些字段相同的记录

    如:查询col1与col2值相同的记录:

    select a.* from table1 a, table1 b where a.id <> b.id and a.col1 = b.col1 and a.col2 = b.col2;

    一、用rowid方法:

    根据oracle自带的rowid属性进行判断是否存在重复记录。

    rowid伪列用于唯一标识物理位置的表行,当用insert插入数据时,会自动生成rowid,与数据一起存放,形如:AAAL=XAAAEAAAAA。

    查数据:

    select * from    table1 a where rowid!=
    (select max(rowid) from table1 b where   a.col1 = b.col1 and a.col2 = b.col2;

    删数据:

    保留rowid最大的记录:

    delete  from    table1 a where rowid!=
    (select max(rowid) from table1 b where   a.col1 = b.col1 and a.col2 = b.col2;

    二、group by 方法:

    查数据:

    select * from    table1 a where (a.col1,a.col2) in 
    (select col1,col2 from  table1 group by  col1,col2 having count(*)>1)

    删数据:

    删除表中多余的重复记录(多个字段),只保留rowid最小的记录。

    delete  from    table1 a where (a.col1,a.col2) in 
    (select col1,col2 from  table1 group by  col1,col2 having count(*)>1)
     and rowid not in 
    (select min(rowid) from  table1 group by  col1,col2 having count(*)>1)
  • 相关阅读:
    WinForm 窗体应用程序(初步)之一
    ADO.NET
    面向对象思想
    数据库原理
    HTML学习总结
    c# 学习心得(2)
    c# 学习心得(1)
    《大话数据结构》读书笔记(2)
    《大话数据结构》读书笔记(1)
    ASP.NET Core学习总结(3)
  • 原文地址:https://www.cnblogs.com/springsnow/p/9394906.html
Copyright © 2011-2022 走看看