- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
" r. b3 I/ Y, l+ {; E6 @/ D本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!
* k$ C' Z9 X1 \- b1列出表中的重复记录
) |. {# P6 b$ h! _4 \7 |9 \& _4 }(sameoda)3 e+ E; P( f1 K* g# x6 C7 e3 F
SELECT [2].[地级市], Count(*) AS 记录数+ h e. F& X j+ y1 O9 A1 X
FROM 2( h# V5 u; L/ |1 S! M* b# W
GROUP BY [2].[地级市]
3 a, @ X* [$ {- y) ?HAVING count(*)>1
$ f2 t1 S, B: VORDER BY [地级市];
# d% k% h: }8 Q g$ g \6 m地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
6 b) e8 c8 s) \2 Z$ P5 v2以下是除去相同记录的过程
- f0 l) N& A2 G6 a/ n3 C2 u; E1)列出表中的所有重复记录
8 J% j9 w0 \- p5 t: r& D+ L(表2中重复记录)# n, ~. v: B5 @& J. [3 _
SELECT 2.*5 S5 k* w3 _+ R# H# b5 @) Q9 E1 C
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];: ?5 T+ N8 k( |) V" ^" F
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨& H$ z% X/ s; r* Z, N3 n& j* X3 U& s5 G
2)从重复记录中找到唯一的一条记录- _. q2 x0 J7 H8 H1 a, V
minbihanhao( z5 T- F& R; t3 S: n/ s& t
SELECT 2.*5 K& [: e' }. k, r P& G
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]" R5 y. T2 {5 \
WHERE [表2中重复记录].[id] Is Null;; C. Y% h: G% i3 v) q/ p
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
2 o* Z: K, _1 T8 x3)显示唯一记录的全部信息# m c* `7 K6 h# j
allsame1
_, y2 I9 T; g7 R/ O: h' t& ]SELECT 2.*
; d4 e. ]* C6 Z1 ?FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
+ u- p% T2 H1 cWHERE [minbihanhao].[地级市] Is Not Null2 @1 [5 Y" ~( b- U- z
ORDER BY [2].[id];
, i# C6 j5 F$ g; ~$ g7 p) i; E3 B- S( P- H+ f
4)在原表中除去所有相同的记录
5 t: H. R: L0 v, s" R$ Rdropsame2
g2 w& m6 _+ D; a& `6 `" R4 CSELECT 2.*
+ B1 R" o; S, r+ BFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
+ ^3 W2 `' b3 b) L0 w4 mWHERE [表2中重复记录].[id] Is Null;
# u8 r( H) H3 I/ K: \8 k5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息, y. `. }2 j z( s/ f# w
表2除去重复记录
8 C: e) N9 ~3 k: H- X; i( Z( BSELECT *
/ h+ d4 h8 b* i+ b/ T- A2 uFROM dropsame2 1 i. I5 Y( g4 x
UNION select * from# T& p+ x+ [# j
allsame1; |
|