- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?) f2 g3 _0 E; l& c8 Q$ u0 x) e
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!( d) o( \; e% w1 [7 j/ U ^
1列出表中的重复记录
7 }5 z. k9 S- D. D" F C/ Z(sameoda)
3 @( b/ J& m0 V/ `# dSELECT [2].[地级市], Count(*) AS 记录数
: D9 L& r1 l+ r& D! H6 |4 TFROM 2, A6 B( X, m) ]. X/ S9 G5 e
GROUP BY [2].[地级市]
; Y. \; Q4 o4 dHAVING count(*)>1& f3 S# |8 K7 U0 h
ORDER BY [地级市];2 C: J8 S( F `0 L: \- A: Z3 Z8 F) c
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
( J) N4 a! u- ^) l( v% ]7 u5 u2以下是除去相同记录的过程
5 R. r% r2 t/ X5 N' x1)列出表中的所有重复记录
' ` C/ |0 X+ `. F' c- n(表2中重复记录)( o8 \/ T3 N8 U% L- Z* X$ {% A9 y1 C
SELECT 2.*2 r- J9 U( Y9 ^( m1 I
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
# m( ]; y3 Q6 Q$ n! d4 u2 Q) @ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨
* D+ \# n5 m% C4 l2 `2)从重复记录中找到唯一的一条记录
! e. d1 M! |, D% ]8 d, v ?' B1 bminbihanhao
* G% \ K& K d* ?! @5 D! @SELECT 2.*$ E; H/ b+ z7 ^
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]: v% L) O5 B$ T. X7 p
WHERE [表2中重复记录].[id] Is Null;6 Z* t! i5 O7 W# r# { @; L
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
1 b' G) @0 k' W( j& ~) T; j3)显示唯一记录的全部信息1 R" r- n% E. n: b" j8 ]4 @
allsame1
* m1 I! J7 d1 s7 a' j$ h6 qSELECT 2.*2 N6 u$ ~' \- ~9 F' \
FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
: M& ?( r/ x- r6 f0 d! {WHERE [minbihanhao].[地级市] Is Not Null
$ ]$ ]9 x0 A- j& U" ?ORDER BY [2].[id];3 J4 ^# g; S9 H! R: r
( O# X& b' q0 S3 Z: r/ w0 N8 y' j4)在原表中除去所有相同的记录
- I1 B5 D+ j. _dropsame2
: R& J2 W' E7 l. P# H7 s" Q6 DSELECT 2.* R* Z! V. ?" p) f' [
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
. _ v! w: V& N: UWHERE [表2中重复记录].[id] Is Null;1 g [- Y! i6 Z) K! w& O1 a7 \9 B
5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
& V* k( T( {$ y/ M# ^表2除去重复记录
9 W: n3 w ^8 m2 A+ nSELECT *
6 E/ m' J; s, cFROM dropsame2
2 X) g& ~) O2 `UNION select * from- R# P: N1 t5 O
allsame1; |
|