- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?2 q V( g! G" \3 A6 Z- F {4 ]
本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!
' F" n6 ]8 _% V I1列出表中的重复记录
& d( T0 Q- b) e% W' u(sameoda)) ^# \6 a; u' ~4 a- f; u
SELECT [2].[地级市], Count(*) AS 记录数
$ @1 U% y; U* oFROM 2& m+ r* {' {! E( L
GROUP BY [2].[地级市], k2 ?7 y0 d: P) M6 p4 a. F: `
HAVING count(*)>19 G( `' Q/ H* G% u
ORDER BY [地级市]; [: K; ~2 V/ n) T2 D
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
# H9 o1 X( o9 s0 W2 w& k" w9 q2以下是除去相同记录的过程4 z- ^: t6 w# M: I5 P$ f; F9 | `, w! @
1)列出表中的所有重复记录# {" x0 f, P9 P* }
(表2中重复记录)6 J9 B: z9 [+ o a! k, n4 h
SELECT 2.*
& G9 g! b8 z$ ~. A2 n. t" Z) T) sFROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];' u8 A+ \0 t4 z5 t+ e5 {! M
ID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨
; e" A" V" Y3 c# x1 A) O2)从重复记录中找到唯一的一条记录' m* a. m& L. y1 ]" }
minbihanhao
{$ e0 X1 j0 E3 K' f3 j! }SELECT 2.*
( r' S6 @/ H T M! H6 R8 v! x( H# s& nFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]6 N6 D2 L3 G b* e
WHERE [表2中重复记录].[id] Is Null;
1 j& T! @9 T) s: p9 Y, f/ p地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
0 q0 Z9 c/ a$ e' H* n3)显示唯一记录的全部信息3 R# N$ D6 D' p b8 u
allsame1
5 \4 G0 I3 ` D5 @! G; FSELECT 2.*1 `6 {4 ^9 g- @* ?
FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])2 q% I4 @4 R4 f& D( F
WHERE [minbihanhao].[地级市] Is Not Null
6 M* M! A/ e8 ]. c& F9 BORDER BY [2].[id]; ?4 C" f4 w; L$ U6 C: _
# x6 _/ E3 F& P: i8 O( Z- I. O
4)在原表中除去所有相同的记录
+ W; ~8 K0 a0 F7 P6 [dropsame2
3 k+ {; ^2 h7 h5 H! R/ C6 oSELECT 2.*
9 [6 O) j: J; xFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]0 ?' ?0 Q% `/ |' Y! Q# W4 n
WHERE [表2中重复记录].[id] Is Null;
5 {( L- q" C) y5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息: d6 J6 ^8 X1 J) Z; x6 ~
表2除去重复记录
' C9 U6 j8 A, ?SELECT *
. d. f+ g/ d+ O1 OFROM dropsame2
. d' S) a- n* tUNION select * from# V' e \* b+ i2 v; C8 Y
allsame1; |
|