- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
( m6 [* k% R' _, V3 {/ q$ a本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!
% ^- n+ @! R/ I# O1列出表中的重复记录3 w" A: s$ M5 x' u, }
(sameoda)
. p$ o; F/ q* \2 {% ?2 f5 t, qSELECT [2].[地级市], Count(*) AS 记录数
' ^6 w3 ?/ Z. P+ u4 Y6 p$ G$ K- a1 p9 JFROM 2
0 ^/ v- h" b1 L/ E( j/ U& B2 iGROUP BY [2].[地级市]
4 W) o! X# a) F: i4 [- bHAVING count(*)>1
" Z6 [* u8 Y; {) P, y+ i8 v9 q3 PORDER BY [地级市];% U5 [9 s* w. R- d; g
地级市记录数1000009510942100000951116210000095112721000009511382100000951149210000095115024 m9 Q/ P* x7 x* J% i
2以下是除去相同记录的过程 B1 e) d, @- v+ Q4 g" ~' W
1)列出表中的所有重复记录0 x1 O7 _# V7 W* Q+ K/ q4 E
(表2中重复记录)
+ X J0 }# t, I" p3 e2 |SELECT 2.*
3 E2 x7 K9 ^3 `6 ?FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
: y7 Y+ t( Q2 ?' y# S# Z# h4 e( U1 \- FID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨: o9 s: N" O, L" w& b
2)从重复记录中找到唯一的一条记录4 J* |& C) [& r' [
minbihanhao4 G$ U y1 v0 u4 T( y& W
SELECT 2.*
! o$ r) K( K" S; \/ AFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
, {! L# m$ ]* x. rWHERE [表2中重复记录].[id] Is Null;0 d. O8 r7 V/ }; Z' x
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
1 V: g! F/ P' \7 D3)显示唯一记录的全部信息" e. }3 f. V6 _% S9 ]0 n
allsame1" E# ?% A" x- d1 ]- E' E9 E
SELECT 2.*
8 x5 Z! b5 l8 d& \0 L2 CFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])0 a, s( _/ _$ V; i) j, v& }, j1 | q
WHERE [minbihanhao].[地级市] Is Not Null
2 M2 D/ v7 k! X. P/ n3 ^1 YORDER BY [2].[id];
3 E' i0 z9 D" f% s% ~0 W
7 q1 H( N* ]- q5 v1 x4 W4)在原表中除去所有相同的记录
- a8 _* S1 P( t2 odropsame2) H& L- G1 i' \3 E, d- h% l
SELECT 2.*) T8 b {( j* Q
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
& Z2 R" X \1 H- z+ F# P; J8 e/ sWHERE [表2中重复记录].[id] Is Null;/ T0 V5 g( J+ O/ L
5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
) \; p+ n: A' {) p: J: I表2除去重复记录. T8 `% P. m$ x2 E
SELECT *
) U. r, j$ N3 r* ?$ c5 e6 ^8 sFROM dropsame2
) G7 j* Q) i) q! ?& Z- V$ wUNION select * from
1 z& p% e- J T7 _8 s. _ allsame1; |
|