- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
在一个表中有重复的记录,重复的次数可能是一条或多条,如何在重复记录中只留下一条,删除其他多余的记录,使数据集的每条记录都是唯一的?
6 }8 Y+ C! F5 k: G( o: W. e; `: f本文运用了一种比较笨拙不过逻辑比较清楚的方法,希望大家能提供更好的方法!
4 h+ j C+ t+ t* O1列出表中的重复记录
& g3 s5 r1 C/ s: P(sameoda)
& \# c7 U8 R" f3 _$ n0 m8 mSELECT [2].[地级市], Count(*) AS 记录数
' X7 l) U- H. _3 U% S2 nFROM 2
0 R$ I- E2 F( T. U! {8 \& n) ]GROUP BY [2].[地级市]' i$ n: B3 _; X/ m' _
HAVING count(*)>1
# x/ N" u, [4 ]ORDER BY [地级市];. i$ p$ E! Y* \7 ^8 e5 K$ E0 X
地级市记录数100000951094210000095111621000009511272100000951138210000095114921000009511502
3 ~& g0 n$ u( L" p- R& z' f8 a2以下是除去相同记录的过程
* v) u8 f2 L3 Z% m1)列出表中的所有重复记录
1 `- S( D/ X. [. n* s(表2中重复记录)7 q1 d( N! o7 C5 `
SELECT 2.*3 Y9 d9 S8 D4 Q8 V8 [
FROM 2 RIGHT JOIN sameoda ON [2].[地级市]=[sameoda].[地级市];
( u) R6 f0 O6 s! a4 S3 q: S# A" p3 U' vID编号地级市保险货物名称数量及包装单位声明价值(元)运输自运输到74691466100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53511077100000951094苯扎贝特片、水飞蓟宾胶囊3箱18600天津佳木斯53501076100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐74681465100000951116水飞蓟宾胶囊5箱29000天津乌鲁木齐53531079100000951127氟他胺片4箱66800天津哈尔滨74711468100000951127氟他胺片4箱66800天津哈尔滨
" H$ ~0 q4 m% k d2 ^2)从重复记录中找到唯一的一条记录% E+ H; H, v8 w) |/ q
minbihanhao
6 |: C3 E1 b9 f8 RSELECT 2.*
9 ^3 a$ u t3 S2 l2 n& xFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID], O. @- I, y, V9 ~4 ?
WHERE [表2中重复记录].[id] Is Null;
6 l6 U* h5 k8 S+ W: S3 A地级市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355/ E# K; j4 m# V: ? B0 t. d l
3)显示唯一记录的全部信息
, R% f7 [1 |$ Uallsame1
, R- g0 ?$ k2 F, g' J" I, B0 s* KSELECT 2.*
7 m: Z% T' V# R7 L1 H, ]FROM 2 LEFT JOIN minbihanhao ON ([2].[地级市]=[minbihanhao].[地级市]) AND ([2].[id]=[minbihanhao].[id])
' `: A V% \5 f0 {/ \WHERE [minbihanhao].[地级市] Is Not Null
! u' m% q: s0 }- B; c0 AORDER BY [2].[id];
. O, b9 d5 }8 m9 }) j! [. ~. _7 Y9 S' y" Z* Z
4)在原表中除去所有相同的记录0 q1 M G1 |0 x
dropsame2
. \& M# Z% M# W% v! tSELECT 2.*
( E& D$ ]* [4 K1 ]- jFROM 2 LEFT JOIN 表2中重复记录 ON [2].[ID]=[表2中重复记录].[ID]
/ l) p5 P. b9 r, R* q7 n- ]0 lWHERE [表2中重复记录].[id] Is Null;
( H0 g2 [, m2 h$ d# j1 M5)表2除去重复记录=在原表中除去所有相同的记录+显示唯一记录的全部信息
3 L$ M+ A) F9 i7 C, l表2除去重复记录
# ^. U4 n: \( k; C5 c0 U* Y" G. kSELECT *
6 i( o; X3 `2 M- u [FROM dropsame2
7 R' q9 u% O% f* U! a, `8 jUNION select * from
0 }9 w; Y- o0 U: ^ allsame1; |
|