a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 0

[电子商务员] 删除sql数据库中的重复数据

[复制链接]
发表于 2012-3-18 16:43:48 | 显示全部楼层 |阅读模式
下面是删除sql数据库中的重复数据的一些方法
3 ^* r/ Q$ c2 q) _0 g! x0 e( N方法一& s& x% X7 g. [4 f& B. T+ P4 G
declare @max integer,@id integer
) Q8 g. O1 f  Z4 p! E( L% d9 z2 Jdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
! c2 n  x1 V4 k9 d. N8 k! {open cur_rows
( W% F( G5 G9 o/ k& ^, d" o9 Kfetch cur_rows into @id,@max1 T# @0 S% Y: j+ R$ s
while fetch_status=0
' B2 x& Y! Y+ n! R2 zbegin, [( _9 @+ ?9 G! T6 M/ h3 j
select @max = @max -1' U* N; Z; M5 Y. r1 b
set rowcount @max
% x- \& Z+ s8 a/ a' {4 y1 a+ c0 N8 cdelete from 表名 where 主字段 = @id
) e1 j5 U9 a# \. U# o/ pfetch cur_rows into @id,@max# o2 ^. e' [) `% C0 U- W/ C9 @
end
+ ]( n. r$ d& c3 v6 }close cur_rows& D+ ?, W( E- i: {$ ~
set rowcount 0
" E) }; V1 l! S* j# [方法二! x: t+ M2 K  `0 \
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
) i, {4 P3 o6 A" ?! D, m' G. F1、对于第一种重复,比较容易解决,使用
, _- ]. V  b& D! Oselect distinct * from tableName! M+ a; a7 y+ Y( G
就可以得到无重复记录的结果集。4 J) t$ D' T3 P$ t( C9 n( n
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除# G, ?0 O" c6 v9 S
select distinct * into #Tmp from tableName$ K7 _0 \3 }# E9 H, G7 w$ S& m
drop table tableName/ W0 _  ]1 n0 [  ~. l
select * into tableName from #Tmp
5 H3 O- l$ e0 M4 e+ Z) Gdrop table #Tmp
% u- s) Y& ^+ E发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
' \% L, K* D8 y$ E" D/ _+ A2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
+ O4 B* H9 X$ X) ~9 K1 q假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集) n- C% W+ u8 b# B) v
select identity(int,1,1) as autoID, * into #Tmp from tableName
- O# s( F1 X8 ^0 p& _" ?: q; rselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID9 H0 p$ g3 J9 G& I7 C
select * from #Tmp where autoID in(select autoID from #tmp2). ~. r' m8 z) a, ~
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-24 19:37 , Processed in 0.504202 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表