- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
2 d$ d1 R3 Q8 D1 |本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!! f3 o1 v* ~6 j
1列出表中的重复记录
) y, [. T0 w/ n" f5 Y: x(sameoda)
" x9 r. O: r4 Z0 w P; k; d/ SSELECT [2].[地级市], Count(*) AS 记录数% g8 {$ G/ b5 Y9 ]
FROM 2
6 C1 U* ?3 c5 U1 v# vGROUP BY [2].[地级市]
) `1 h( T1 {+ Y+ GHAVING count(*)>14 D5 b$ ?5 _- t* U
ORDER BY [地级市];
3 b @* G7 X5 P0 h地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
6 Q R0 w- ^/ ?- b2以下是除去相同记录的过程
, b* e, U' c/ X1)列出表中的所有重复记录7 c4 Y+ x( q+ b h7 j
(表2中重复记录)
+ C. C1 Z% G0 J2 f) ^& G) d3 J! _SELECT 2.*+ {8 H4 S$ [8 Z6 O3 {. o
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
) `7 ]# c1 R* \+ CID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨
6 g4 }. _: D0 D& ^* k5 c2)从重复记录中找到唯一的一条记录6 i7 Z5 \9 |* W4 e+ e5 I
minbihanhao
: }# u" M3 O2 I* [6 I0 KSELECT 2.*
: I8 I. d2 s7 t! {# `# q; SFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]8 ^! M- B9 c7 e( S! ]6 O! z
WHERE [表2中重复记录].[id] Is Null;3 U5 N% l" M: \% X' c5 ]; c
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355, C7 P/ q. _% r) c/ a
3)显示唯一记录的全部信息$ ^# B4 g8 m7 j6 y7 [6 S7 {
allsame1% V3 a1 f u% a# J+ A' n9 e
SELECT 2.*
8 C8 M( q* T& O! v% PFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
* r2 j S) L$ k5 n0 p6 S$ f0 `! xWHERE [minbihanhao].[地级市] Is Not Null2 S0 C+ c& p" p; E; R# h. X# g! g- A
ORDER BY [2].[id];
' o) t6 ~% B/ E6 p+ } Q) m! U' o9 Q7 s {) ]2 D
4)在原表中除去所有相同的记录3 i& H* ?( t/ J" ^ t- F& J
dropsame2* h, p7 t: ~" i% Z+ R) N( A7 `2 W
SELECT 2.*
. E9 a9 o' Y6 b' Z# ?3 }' yFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
9 n, }- ?4 i6 KWHERE [表2中重复记录].[id] Is Null;
/ W' z' }9 S/ T- V7 g3 ?, T( H5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
# ?# e% h9 l4 e# |表2除去重复记录* B2 r# }9 R+ G* B8 Q" {7 V
SELECT *
, G# g( B$ n6 ]: D: L& M% {FROM dropsame2 + p/ |0 N+ a4 }/ C
UNION select * from
6 x# L" s7 T$ R H1 \# l( J6 M allsame1; |
|