- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?2 G; R- P6 | \6 G6 T3 v* u
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!
/ [( e9 q" Z0 A1列出表中的重复记录7 H; V5 q% i. C2 e
(sameoda); E2 _" j# U' @/ v$ S2 r" Z
SELECT [2].[地级市], Count(*) AS 记录数
( Y( W0 N' n* S# j% t4 q1 Q$ c/ ?4 Q3 lFROM 2
) D, s( ?8 {2 S3 e/ k' eGROUP BY [2].[地级市]
1 `) _7 X( j( A1 w, e/ rHAVING count(*)>1& J) Q. Q6 S5 s" B
ORDER BY [地级市];, D: D& L5 ~- i6 |- i
地级市记录数1000009510942100000951116210000095112721000009511382100000951149210000095115028 G X9 J3 r/ ? q9 l
2以下是除去相同记录的过程1 _8 T5 n( _5 l" E& b) }
1)列出表中的所有重复记录
" z8 p. j. H% I( w7 Z3 I(表2中重复记录)
5 ? J! I7 d( l, u" K; ^SELECT 2.*
0 L* P ?& {: i( bFROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];& T1 [, i k2 K7 \5 |; \
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨( E; x5 H9 b& E4 |1 D# k$ Z
2)从重复记录中找到唯一的一条记录
1 E& p6 \0 c0 w( a2 ?; Q$ H7 Yminbihanhao
/ }9 |. H) h1 ^3 C8 {SELECT 2.** S+ q! x* q( ~/ S
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
: a; N4 Y" _3 |; v; q5 _8 P5 WWHERE [表2中重复记录].[id] Is Null;
' m$ a& Q5 F; C- {地级市id1000009510945351100000951116535010000095112753531000009511385354100000951149535210000095115053557 {3 ~$ R1 n; ~3 \; E V- T5 s
3)显示唯一记录的全部信息8 n3 m8 \) Q0 p6 O( P9 X0 A7 X! \
allsame1
2 Z+ n7 D( L- L1 o7 S8 O7 n, tSELECT 2.*
9 U3 T4 P9 h# P9 S( dFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
' t9 O2 T( Q0 w: u% xWHERE [minbihanhao].[地级市] Is Not Null. B& P; W( J+ n2 U& v2 L2 H! l
ORDER BY [2].[id];
# T7 s3 j8 J# N8 S% y5 A: V4 V- b! B' ^( e& {
4)在原表中除去所有相同的记录
: D0 e: }4 f8 }( R }dropsame2" o+ t* r: b+ }$ p# W7 u- {3 U
SELECT 2.*, Z. [+ {# }9 E; ?6 r$ d
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]* Q, M) ^8 |, L! D6 ^9 j, [) g
WHERE [表2中重复记录].[id] Is Null;
6 E; }) `* n) I# K/ Y5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
- i4 ]2 c# k m/ L* z- i$ _# D表2除去重复记录. g7 k0 ^, \8 g, t# L/ V" r
SELECT *- t" C. T3 M: V+ g7 M1 f
FROM dropsame2
; P" }: |: v+ p6 ]UNION select * from
7 M# S/ n+ y+ o& b allsame1; |
|