a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 151|回复: 0

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

[复制链接]
发表于 2012-3-18 16:43:48 | 显示全部楼层 |阅读模式
下面是删除sql数据库中的重复数据的一些方法
5 J( m4 M0 p4 B1 \0 s5 R方法一
; \6 q8 V; N' [# Z% Hdeclare @max integer,@id integer! x3 B$ L4 ?5 ~  \/ |
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
- M' r- b, I1 e2 B. R0 ^; a+ Zopen cur_rows
, j' x' j3 b# R  R' N3 R: ~) Ifetch cur_rows into @id,@max$ Z1 U; A, D, Q0 E: L9 _  O7 _# V! q9 r4 R
while fetch_status=01 M9 Y$ E1 E3 D* b2 S
begin
. c+ ?. C0 ]; \select @max = @max -1: [, r' z* ~4 m
set rowcount @max8 m( C% y6 f- r
delete from 表名 where 主字段 = @id: ^# u8 A1 Q+ e4 }5 ~4 ~
fetch cur_rows into @id,@max! z1 D8 Z3 k5 I( j  X
end
& r$ J+ P) K& E. N9 M8 zclose cur_rows
7 n2 L8 B* I# p6 Q$ y7 X4 Gset rowcount 0  w* B( L& Y) W% a8 Q& S
方法二* {# V1 Q. D; N
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
! q& k4 n# a: G& ]0 s9 L8 Y$ N1、对于第一种重复,比较容易解决,使用
3 x5 l* L( p- N* ], bselect distinct * from tableName
1 r, u2 |" Z. _就可以得到无重复记录的结果集。! Z' M4 q1 j$ ^7 j2 f: H
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
/ v/ E4 h% K9 O: Bselect distinct * into #Tmp from tableName* M' u/ T; c% [6 G4 Z! }
drop table tableName7 [7 e1 o4 n+ \
select * into tableName from #Tmp. b$ d: a1 _; n, q. p% N7 O! a2 j; I
drop table #Tmp" ]2 w& C& K  f# O9 ~  q2 O8 C/ D
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
0 j* f, E  D6 t2 G4 ?2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
8 N$ k* z/ Q& w. q( ~假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集. X6 W. [# @$ K: K* L$ u" W- E
select identity(int,1,1) as autoID, * into #Tmp from tableName
- k1 }. ]2 ?9 k& O- ~' Nselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID( c1 z  r; A9 ^, B. j+ D8 D
select * from #Tmp where autoID in(select autoID from #tmp2)
- s: C6 p+ s5 M/ ]最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 01:24 , Processed in 0.238747 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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