- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?5 V1 c+ O4 t3 }
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!, u3 [5 t3 ?4 ?$ W/ Y% D
1列出表中的重复记录
6 {2 o) g1 r+ G(sameoda)
1 u1 A& x. x) H* xSELECT [2].[地级市], Count(*) AS 记录数8 N" R- J% H/ W% r1 y0 v( T
FROM 23 d3 M# A& _( P3 c0 t5 L
GROUP BY [2].[地级市]4 ]6 d& `6 X; U; I3 }4 C. Y* i7 F
HAVING count(*)>1; H. m/ Y$ {+ U- X/ [
ORDER BY [地级市];" r( B( E* F/ D% O% }' w- S3 ?
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
) J* C J4 x) @8 C- `2以下是除去相同记录的过程2 y8 I, n9 T1 E( T. k0 Z+ N6 [% i
1)列出表中的所有重复记录
. u) `& F( ~/ ^- A4 y$ _ ~(表2中重复记录)
+ f( V! ^, Z5 u; R3 C# TSELECT 2.*
: C0 W _, ]2 ~FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
1 o: p- O; Q5 p9 n# K5 [( vID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨2 F+ v# \4 _$ a3 K
2)从重复记录中找到唯一的一条记录
- v: t# U {' `, aminbihanhao" _4 e0 w0 ^4 F4 g- W
SELECT 2.*7 S+ P, o; S% @! H
FROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID], R! v0 ~( I8 w z
WHERE [表2中重复记录].[id] Is Null; g' H; s5 s5 Y/ \3 b
地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
# {% \2 m3 G4 }) _0 E5 E- u3)显示唯一记录的全部信息
3 i0 u3 F2 z5 Q9 |: b) S) gallsame19 A% E% L' p$ }
SELECT 2.*
, r2 d( _9 b* N: m! s/ YFROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
- P; G" H6 |& k/ s0 nWHERE [minbihanhao].[地级市] Is Not Null- O; [$ e2 d; e9 D
ORDER BY [2].[id];. S0 p+ W; l- @2 S# y; K7 s
3 |- k+ h% x) \2 X4 B1 [4)在原表中除去所有相同的记录
0 K$ v# F" S+ Y7 n0 h( `. `0 ^dropsame2
. H |# f3 o" D, g1 n. ^SELECT 2.*
# Z! K' B3 }3 NFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]3 w3 W; D5 o# ]2 H+ w7 X& Z
WHERE [表2中重复记录].[id] Is Null;
) r: o2 B* h. o. K5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
7 L' k1 i) D" n表2除去重复记录
8 ~% [ R0 m; wSELECT *' L# r0 l* d" ~! W* j' H. Q
FROM dropsame2
" w# X! N5 X% C9 ^UNION select * from
/ B, x( P) P8 S+ F3 Q: g allsame1; |
|