- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?! z- c* z8 D m* F* o {
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!3 k0 A; k+ r1 G4 h4 V! ]
1列出表中的重复记录% }8 u3 e8 q6 P7 `/ Q9 F- U! D
(sameoda)0 T* d" R) {& F j
SELECT [2].[地级市], Count(*) AS 记录数! s+ _! T' ~3 U5 e6 H' H f
FROM 2
% o# _2 s1 u0 y P; N* k8 N2 H, ^GROUP BY [2].[地级市]
& ]. i% P& v: wHAVING count(*)>1
% L' O2 `# ^# |& _ORDER BY [地级市];" e( c9 w" c! @; h/ Y
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502' c) H- o( _, L- H# e+ z F1 d
2以下是除去相同记录的过程* R! z; Z# q5 Y) u
1)列出表中的所有重复记录
8 z% {* i6 M* q% s" I(表2中重复记录)
" G0 g1 }1 r& R$ M4 CSELECT 2.*
& I$ f5 ~6 v& b4 g. eFROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];& z( q$ n }+ D% o* p# Z- n
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨5 y! q' i, J% I" U7 O
2)从重复记录中找到唯一的一条记录8 s& t( b9 G- u D
minbihanhao* ^8 G4 y \% T
SELECT 2.*
# ? n2 l" V9 k) M6 S: S. r% _9 PFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
" y% |: v) l# a% n+ m3 p5 a6 ~WHERE [表2中重复记录].[id] Is Null;1 o+ S7 Z( N, f- a
地级市id1000009510945351100000951116535010000095112753531000009511385354100000951149535210000095115053554 Z6 c# `. c* b2 N3 S. i8 P: ^
3)显示唯一记录的全部信息8 q5 A0 U4 b/ D" f: z
allsame1. ~3 P4 i* \& i
SELECT 2.*$ h! S+ w2 k0 r( W+ u" a4 W" l
FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])) S$ y1 |3 y7 i. U
WHERE [minbihanhao].[地级市] Is Not Null6 [/ ]8 G) `& t, Y+ d
ORDER BY [2].[id];
# G5 {- m! e8 X6 S/ O d9 k9 b5 y" u7 |7 C) ]5 ~; l
4)在原表中除去所有相同的记录
; j6 G. w+ K S) H# cdropsame2
: E& X# ]9 ^0 x% ?6 r- Z8 CSELECT 2.*( v, g6 Z; ?5 ~. B# ?
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
v o/ P1 M5 H. xWHERE [表2中重复记录].[id] Is Null;6 L* @% H2 v/ d6 ~
5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
$ h/ v( V0 b7 B9 d& G表2除去重复记录4 y7 u5 j/ @$ Z4 A8 N2 y( N. B
SELECT *
9 w) b# n2 ]5 {- e5 Z8 rFROM dropsame2
2 r. T" w' E$ b V J' cUNION select * from! s* x3 f. m3 p" _! R9 x
allsame1; |
|