Oracle如何实现多个字段去重
来源:互联网 发布:网络宣传阵地建设ppt 编辑:程序博客网 时间:2024/04/30 13:12
我们通常使用distinct关键字来去除重复记录,还有没有其他办法呢?通过查找资料,确认group by也可以,利用rowid也可以实现功能。其中,group by是用来分组统计的,能用distinct的地方就不要用group by。下面我们看一下几种方法具体如何实现,至于选用哪一种,主要还是看需求,实现功能是最主要的。
如下:
使用group by去重
gruop by是Oracle中常用的分组函数,我们看一下如何使用group by来实现去重功能。
我们需要将重复记录删掉,拿hoegh表来说,我们需要保留h3列值最大的那一行记录,我们可以通过下面语句来实现。
ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置。通过下面的语句,可以保留重复记录中的最新一条记录(即最后插入的那条记录)。
首先我们创建测试表hoegh,插入3条记录。我们可以看到,就前两个字段而言,第二条记录和第三条记录是重复的。
SQL> SQL> create table hoegh(h1 number,h2 number,h3 number); Table createdSQL> insert into hoegh values(1,1,1); 1 row insertedSQL> insert into hoegh values(2,2,2); 1 row insertedSQL> insert into hoegh values(2,2,8); 1 row insertedSQL> commit; Commit complete SQL> select * from hoegh; H1 H2 H3---------- ---------- ---------- 1 1 1 2 2 2 2 2 8 SQL>使用DISTINCT去重
如下:
SQL> SQL> select distinct h1,h2 from hoegh; H1 H2---------- ----------1 12 2SQL>
使用group by去重
gruop by是Oracle中常用的分组函数,我们看一下如何使用group by来实现去重功能。
SQL> SQL> select h1,h2 from hoegh group by(h1,h2); H1 H2---------- ---------- 1 1 2 2 SQL>
我们需要将重复记录删掉,拿hoegh表来说,我们需要保留h3列值最大的那一行记录,我们可以通过下面语句来实现。
SQL> SQL> delete from hoegh 2 where h3 not in (select max(h3) from hoegh group by h1,h2); 1 row deleted SQL> commit; Commit complete SQL> select * from hoegh; H1 H2 H3---------- ---------- ---------- 1 1 1 2 2 8 SQL>使用rowid去重
ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置。通过下面的语句,可以保留重复记录中的最新一条记录(即最后插入的那条记录)。
SQL> SQL> delete from hoegh 2 where rowid not in 3 (select max(rowid) from hoegh group by(h1,h2)); 1 row deleted SQL> commit; Commit completeSQL> SQL> select * from hoegh; H1 H2 H3---------- ---------- ---------- 1 1 1 2 2 8 SQL>
0 0
- Oracle如何实现多个字段去重
- Oracle如何实现多个字段去重
- oracle 多个字段 去重
- List多个字段排序、去重
- [sql]根据多个字段去重
- 多个字段同时去重
- oracle 多个字段去重复
- 多个字段相同的重复记录去重
- 怎样对多个字段去重并计数?
- List去重复——多个复杂字段判断去重
- List去重复——多个复杂字段判断去重
- Oracle根据多个字段进行查重
- oracle通过表中2个字段分组查询取数量最大的所有记录,有条件的去重
- oracle 去重.多条件
- oracle根据某个字段去重查询实例
- oracle数据库表中某几个字段的重复数据去重
- 多个字段查重
- SQL 去重不用distinct如何实现?
- 安全模式下的加解密
- Android组件之Activity
- struts(八)文件上传
- jz2440内存实验(八)
- 数据库
- Oracle如何实现多个字段去重
- Linux设备驱动remap_pfn_range() 和remap_page_range()
- visual studio编译器用cmd编译运行.c文件
- 中英文切换导航制作
- 关于Android应用的资源,国际化和资源自适应
- java提示框
- 如何下载北大图书馆多媒体资源服务平台讲座
- kruskal算法+并查集 输出每一条路径
- 地铁译:Spark for python developers --- 搭建Spark虚拟环境1