`
grzrt
  • 浏览: 184053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DB2中删除重复记录的方法

 
阅读更多

在DB2中不象Oracle那样可以借助rowid,rownum等伪列来删除重复的记录,也没有有效的方法可以在一个SQL中直接删除记录.但可以借助row_number() over()语法和视图的方式将重复的记录删除.

下面看一个实际的测试DEMO

 

方法一:借助视图来实现

SQL> create table zrp (no int);
DB20000I SQL命令成功完成。
SQL> insert into zrp values(1);
DB20000I SQL命令成功完成。
SQL> insert into zrp values(1);
DB20000I SQL命令成功完成。
SQL> insert into zrp values(2);
DB20000I SQL命令成功完成。
SQL> insert into zrp values(2);
DB20000I SQL命令成功完成。
SQL> select * from zrp;

NO
-----------
1
1
2
2
4 条记录已选择。

SQL> create view v_zrp as select no,row_number() over(partition by no) as row_seq from zrp;
DB20000I SQL命令成功完成。
SQL> select * from v_zrp;

NO ROW_SEQ
----------- --------------------
1 1
1 2
2 1
2 2

4 条记录已选择。

SQL> delete from v_zrp where row_seq=2;
DB20000I SQL命令成功完成。
SQL> select * from v_zrp;

NO ROW_SEQ
----------- --------------------
1 1
2 1

2 条记录已选择。

SQL> select * from zrp;

NO
-----------
1
2

2 条记录已选择。

SQL>方法二:借助row_number() 函数来实现D:DB2BIN>db2 -td;

SQL> select * from zrp;

NO
-----------
1
1
2
2

4 条记录已选择。

SQL> delete from (select no,row_number() over(partition by no) as row_seq from zrp) t where t.row_seq>1;
DB20000I SQL命令成功完成。
SQL> select * from zrp;

NO
-----------
1
2

2 条记录已选择。

SQL>



补充资料:
select *,row_number() over(order by productname) as rownumber
from products
--上面是正确的,然后我想的是从这个结果集在取10-20之间的数据,然后我书写如下:
select *,row_number() over(order by productname) as rownumber
from products
where rownumber between 10 and 20
--这样报错.然后又找资料看,找不个例子.然后我照那个例子改进
select* from
(select *,row_number() over(order by productname) as rownumber
from products)
as temp
where rownumber between 10 and 20
--这样就对了.

分享到:
评论

相关推荐

    数据库 查询删除重复数据

    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

    db2数据库入门教程(官方中文版)

    2.1 DB2 Express-C订购中包含的功能...............................................................................22 2.1.1 Fix packs补丁包..................................................................

    DB2ASP自动ASP生成器

    DB2ASP是一个可以自动将ACCESS...可以满足常见的信息列表(可以编辑删除),新记录提交表单,查询表单的自动生成,对于经常用asp编写进行数据库操作网页的程序员帮助较大,让你最大可能地进行重复的数据库操作代码编写。

    db2数据库入门官方教程(中文版)

    2.1 DB2 Express-C订购中包含的功能...............................................................................22 2.1.1 Fix packs补丁包..................................................................

    数据转换DBF

    7.快速删除重复记录 8.记录浏览方式 9.创建、修改和打印dbf文件结构 10.输出到DBF, TXT, XML, Excel, HTML(以表或表单方式), PRG, SQL文件 11.高级排序:以任何字段排序 12.如果文件允许,自动打开共享方式 13.由DBF,...

    经典全面的SQL语句大全

     19、说明:删除重复记录 Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)  20、说明:列出数据库里所有的表名 select name from sysobjects where type='U' 21、...

    超实用sql语句

    19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into...

    程序员的SQL金典.rar

     本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...

    经典SQL语句大全

    19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into...

    数据库操作语句大全(sql)

    19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into...

    sql经典语句一部分

    19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into...

    程序员的SQL金典6-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典7-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典3-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典4-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    数据库设计规范化.doc

    规范化-数据库设计原则 摘要 IBM 为社区提供了 DB2 免费版本 DB2 Express-C,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。... 2、而且每一行的记录都是没有重复的;

    Oracle数据库学习指南

    30.删除表内重复记录的方法 31.数据库安全性策略 32.数据库的查询优化技术. 33.提高C-S系统性能的一些方法 34.提高ORACLE数据库系统import性能 35.外部联接的用法 36.性能调试的一般问题 37.优化 38...

    SQL语法大全

    rs.delete 删除当前记录,但记录指针不会向下移动 rs.addnew 添加记录到数据表末端 rs.update 更新数据表记录 --------------------------------------- Recordset对象...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时...

    asp.net知识库

    .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和...

Global site tag (gtag.js) - Google Analytics