- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?$ h- [0 a$ t+ s/ _, K' J5 Z
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!; d J1 y4 W9 c7 u0 O, p$ f' p) W D
1列出表中的重复记录
1 A2 H4 }0 C( i! W0 Z/ K! o(sameoda)
) H4 ^2 }+ N3 p+ jSELECT [2].[地级市], Count(*) AS 记录数1 o& A# `' U+ k# v0 T
FROM 2: }2 S; G$ b: D4 g
GROUP BY [2].[地级市]. M/ g1 q4 b" t5 {) r
HAVING count(*)>1- T, s& C3 i+ s3 J
ORDER BY [地级市];) c7 k- w; | k0 `" v
地级市记录数1000009510942100000951116210000095112721000009511382100000951149210000095115022 j/ C$ ~% N4 G+ V" ^, z& y
2以下是除去相同记录的过程8 D( W$ ~) I7 P5 |# [
1)列出表中的所有重复记录
" A7 N1 V9 c1 K/ g; `. i(表2中重复记录)
+ U5 w. P+ Y: D6 m) |- K ASELECT 2.** Z! [3 y6 j6 ~3 {" {! F+ n( N/ m
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];8 c- D! _; _; [
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨2 z6 s' X( x# w
2)从重复记录中找到唯一的一条记录1 w! ]* K3 V+ ?+ l
minbihanhao
/ L# c! T3 N; t; M9 l3 O' E1 u. J1 k: j& ]SELECT 2.*
C+ \) _" d) F7 S- b# n8 j# d& {/ nFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
i& I& ~5 e- F+ I) ]! kWHERE [表2中重复记录].[id] Is Null;. ?. c6 I, z( Q
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355, w6 W! M6 ?5 m4 V" N4 i2 E) Y
3)显示唯一记录的全部信息8 l, L' F! W+ a+ @5 k
allsame1
* W, g" m+ L' c" q/ S4 K/ z$ n: USELECT 2.*
# o/ l, Q M* ~0 P4 QFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])) |2 o' W" H5 |: @( H: O# q5 [* v
WHERE [minbihanhao].[地级市] Is Not Null5 f' R8 t; z1 W/ b! u+ \
ORDER BY [2].[id];
6 e8 J+ ^5 ?* C' {8 ~ u: y
. \) B+ c, I. ?* W$ X( |4)在原表中除去所有相同的记录3 Q8 L' c' b' ^, L2 v9 l: p2 X
dropsame2
3 W/ K% }9 _4 j% C* v% uSELECT 2.*0 r1 d# o6 ~" @* A( C
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]" t- R+ n3 h1 E5 y# P% [) \* f' K
WHERE [表2中重复记录].[id] Is Null;
$ }4 t" L Z4 Z) o. e* b$ p5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息: O) ]6 y& f' P
表2除去重复记录
, h& ^; P+ |5 o: C/ k( \9 e! PSELECT *6 V/ ]2 L: E- ^- ^) e, U
FROM dropsame2
& M- H; K" H7 kUNION select * from( l: j# J2 i+ P' i* ~+ w
allsame1; |
|