- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
' u1 I V0 E- x! c( H, m6 \本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!1 ~3 w3 Y K: l! G& @3 \$ ?
1列出表中的重复记录3 J" D& W$ S7 _* F) ^
(sameoda)8 V. U: E( }. e/ l+ _) U# l
SELECT [2].[地级市], Count(*) AS 记录数. B( R6 f6 g1 M
FROM 2
7 M" c: K& g! A8 L' F: I; @GROUP BY [2].[地级市], }$ ?3 W! B0 V& q1 y$ }: j
HAVING count(*)>1. q) b3 g8 z& P7 ?( \* N( a8 C' [
ORDER BY [地级市];5 |7 e& O( e7 I; ]/ q( u3 p' B
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502" I) y5 |7 J& y4 E
2以下是除去相同记录的过程
" P: j3 J. y+ e" k w- m8 Y1)列出表中的所有重复记录' G$ B% R, A* p7 I. C
(表2中重复记录)8 J, Z; x% ^' |4 C5 w1 L6 k
SELECT 2.*. q+ Q9 {1 b4 {% A! b( s6 ~. N4 }
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];- u8 b6 t- `6 _* I
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨" N9 A H2 N6 [& T
2)从重复记录中找到唯一的一条记录* _5 j5 _4 m: w
minbihanhao) i/ S" |# w. Y1 A" l
SELECT 2.*
# B2 z% o7 ]( l4 }8 IFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]3 x+ H( [; c2 c( c8 R( [$ \
WHERE [表2中重复记录].[id] Is Null;. k7 F) r1 f7 X6 ^% y |% N8 Z
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355# R b/ p* T5 A5 E4 A0 }3 X) l* A4 G
3)显示唯一记录的全部信息0 _7 Q+ W2 s) {5 W
allsame1$ Q0 n Q4 o: @$ @
SELECT 2.*. b1 V" C' Z6 a0 j
FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])' t; g$ x! A* m. Y# S6 O
WHERE [minbihanhao].[地级市] Is Not Null
8 v6 D! V+ F% kORDER BY [2].[id];) C9 K+ n: u7 l1 Q/ s
: R& ^. u8 T: @# q; ^4)在原表中除去所有相同的记录2 W$ w( o9 R6 g! l | x. D
dropsame2
3 ]3 `2 I- ~5 X3 O& T+ K1 BSELECT 2.*
- S2 q: |3 t9 Y" s. pFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]5 P, T2 C- Y/ R7 f, |
WHERE [表2中重复记录].[id] Is Null;
7 ?* A- u9 r. B, n6 ~5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息7 M7 R$ B9 m- g+ a# Z" \
表2除去重复记录
% X. l5 s- o& ZSELECT *
9 ^1 O$ M! \% Y3 k* CFROM dropsame2
: T' C3 a5 o& TUNION select * from
8 L4 F% E; M/ b5 `% Z% w4 r3 c7 W$ | allsame1; |
|