Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1634506
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2011-04-13 10:22:14

    由于各种原因,用户可能会遇到IQ库中某个表有重复记录的情况。如何删除这些重复的记录呢?Sybase的ASE数据库由于不支持ROWID,所以实现这个功能相对麻烦一些。Sybase IQ数据库可以支持rowid,在实现重复数据删除的时候就多了一种新的选择。下面以一个例子说明这一方法:
    1. 创建测试表
 create table test1(id int,name char(8),age tinyint) ;
 
    2. 插入测试数据
 insert into test1 values(1,'aaaaaaaa',20);
 insert into test1 values(1,'aaaaaaaa',20);
 insert into test1 values(1,'aaaaaaaa',20);
 insert into test1 values(2,'bbbbbbbb',30);
 insert into test1 values(2,'bbbbbbbb',30);
 commit;
 
    3. 下面的查询可以得到消除重复记录后的结果集
 select * from test1 where rowid(test1) not in (select rowid(a) from test1 a, test1 b where rowid(a)>rowid(b) and a.id = b.id and a.name = b.name and a.age = b.age )
 
    4. 下面的语句可以删除表中重复的记录
 delete from test1 where rowid(test1) in (select rowid(a) from test1 a, test1 b where rowid(a)>rowid(b) and a.id = b.id and a.name = b.name and a.age = b.age );
 commit;
阅读(4642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~