由于各种原因,用户可能会遇到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) |