- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
" `$ n8 ]) Q0 C' L本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!( {9 g$ I$ [5 f' R) y
1列出表中的重复记录
8 s; u. c6 A7 \(sameoda)3 q, A. a- I/ z" c1 U& e
SELECT [2].[地级市], Count(*) AS 记录数
: \0 H4 M, i x h7 t% Z) \9 SFROM 2
9 r( \5 u0 y5 F, F/ I0 H4 w9 yGROUP BY [2].[地级市]. F# }# Y2 V5 R. d6 R
HAVING count(*)>1
7 r: W0 c" s& D& f# V1 K. ZORDER BY [地级市];; I1 X6 |) {: C1 R; H% u
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
. q( A& t8 [# y8 t; a) a7 O2以下是除去相同记录的过程
. R* _& q' k2 ^$ G% ?0 N1 i1)列出表中的所有重复记录+ K5 C8 e ]; R* W0 ~, ^ T
(表2中重复记录)! _5 Y' y _' v6 N5 h
SELECT 2.*
& k" @+ [( b5 x+ KFROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
! A/ t1 s) f$ s) Z* YID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨
9 t! D! c5 P \, u2)从重复记录中找到唯一的一条记录
2 Q! Y9 B0 n! d6 sminbihanhao
; L* B" c- j N/ r, r* j/ RSELECT 2.*
N9 P& R& X4 a! t y/ jFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
# R9 F7 ?+ F3 BWHERE [表2中重复记录].[id] Is Null;. u9 b5 E1 B; s! S( ~# B% X+ Z+ c- v
地级市id1000009510945351100000951116535010000095112753531000009511385354100000951149535210000095115053558 j& R; U* l" `2 W/ Z! f O
3)显示唯一记录的全部信息
; ?2 A6 j! v& jallsame1 V6 O1 ^8 M3 K. p' ]7 L9 |4 g$ A6 d
SELECT 2.*
3 \# s: A+ a5 s* E& [9 t" oFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id]), p# P5 b: @* {$ P
WHERE [minbihanhao].[地级市] Is Not Null! ~! k% Q1 ^5 O5 v% W6 Q
ORDER BY [2].[id];
; V, ^6 N- e1 \- p( x: J n' K7 O( y& I" M6 B1 F& P
4)在原表中除去所有相同的记录* M. K; O1 T' f* | e5 _# M
dropsame2* F( m: ]7 H) U' C H, C
SELECT 2.*
5 l# c/ `1 _* R- S9 l( s Z, E; x MFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
3 r' b5 |3 ^6 m7 l2 oWHERE [表2中重复记录].[id] Is Null;* o3 L& ?9 ^+ _' U7 S
5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息3 x* J8 T/ r, c( u5 K+ ~. }
表2除去重复记录
& K8 x: m8 g& QSELECT *2 F* ?" D# J+ N7 }5 w U
FROM dropsame2 : B5 q3 C' r4 p$ a. I8 y. D
UNION select * from
6 w* A) `9 N* E/ U- |/ D3 m7 H allsame1; |
|