Sybase去除重复数据的一种方法
sybase数据库中去除重复数据的方法有很多中,比如:identity+max(),set rowcount N 或 top N,distinct,ignore_dup_key等等。
以后花时间整理一下去除重复数据的不同方法。
今天,仅仅介绍如何使用union操作符来去除重复值。
在select命令中union all不删除重复行,而union会删除重复行。
这样的话,将包含重复行的记录通过union操作符插入到一张临时表中,然后再倒回来就行了。
比如:对表tmp有5条记录,其中有2条重复记录。
1> select * from tmp
2> go
id name
----------- --------------------------------------------------------
1 sysobjects
2 sysindexes
3 syscolumns
1 sysobjects
3 syscolumns
(5 rows affected)
通过union操作符,将表tmp的记录插入到另外一张临时表tmp1中。
select * into tmp1 from tmp
union
select * from tmp where 1=2
go
1>select * into tmp1 from tmp
2>union
3>select * from tmp where 1=2
4>go
(3 rows affected)
1>select * from tmp1
2>go
id name
----------- --------------------------------------------------------
1 sysobjects
2 sysindexes
3 syscolumns
(3 rows affected)
再将临时表tmp1的数据倒回tmp就完成去除重复数据的工作。