| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3029 人关注过本帖
标题:如何更好的删除重复数据?
只看楼主 加入收藏
llljjjmmm1
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-23
收藏
 问题点数:0 回复次数:15 
如何更好的删除重复数据?
假设我要做一个非常大的数据库,比如说机选彩票号码,随机产生的号码如何排除产生的重复号组,如
02 06 14 17 22 31 -02
04 09 13 25 27 32 -06
………
03 07 13 22 28 29 -13
04 09 13 25 27 32 -06

你一说,我就会有灵感。呵呵!
搜索更多相关主题的帖子: 彩票 数据库 删除 号码 灵感 
2006-09-27 20:37
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 

就你的具体情况来看,第2条记录与倒数第1条记录是重复的;假如添加新的记录09 04 25 13 27 32 -06也应该是第2条记录的重复记录。这样的话,判断比较麻烦。

假如记录的顺序一样、值也一样,算重复记录的话,可以写成SELECT-SQL形式,也可以写成先进行唯一索引后复制的形式

假如考虑记录的值,而不管排列顺序,就像集合相等的概念那样,这样去掉重复记录稍微麻烦一点.先生成一个安排好顺序的关键字段,再进行唯一索引,最后进行复制。


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-27 21:20
llljjjmmm1
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-23
收藏
得分:0 

以下是我做的一个,直接在原库里查找重复数据,结果我试了一下,如果库里有10000条以上记录的话,排除一次要半个小时以上,呵呵,差点晕倒。

SET DELETED ON
USE ssqjxsj_dat.dbf
Dimension gaArrayOne(6)

GO TOP
xx=0
jsq=1
c6HH1=''
c6HH2=''
DO while .NOT.EOF()
SCATTER TO gaArrayOne
For i=1 To 6
c6HH1=c6HH1+ALLTRIM(STR(gaArrayOne(i)))
ENDFOR
SKIP
c6HH2=''
DO while .NOT.EOF()
If c6HH1=c6HH2
DELETE
xx=xx+1 &&记录已删除的数量。
SKIP
SCATTER TO gaArrayOne
For i=1 To 6
c6HH2=c6HH2+ALLTRIM(STR(gaArrayOne(i)))
ENDFOR
ELSE
SKIP
SCATTER TO gaArrayOne
For i=1 To 6
c6HH2=c6HH2+ALLTRIM(STR(gaArrayOne(i)))
ENDFOR
ENDIF

ENDDO
? xx
jsq=jsq+1
GO jsq
ENDDO


如果我们交流的知识有所保留,那么我们都将慢慢落后。
2006-09-28 19:53
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
对于记录数大的数据库应该选其他大型数据库,而不是使用VFP。在小型数据库中,VFP就更有优势,更灵活方便。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2006-09-28 21:44
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 

我有一个不成熟的想法:
增加一个字段(即第八个字段),把前七个字段的值以降序排列并连成一个字符串,然后存入第八个字段中,最后用SELECT-SQL语句以DISTINCT参数选择不重复数据。
不知可否?!

[此贴子已经被作者于2006-9-28 22:14:13编辑过]


两人行已有我师……
2006-09-28 22:12
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
CLOSE ALL
USE 原表
INDEX ON 字段1+字段2+字段3+字段4+字段5+字段6+字段7+字段8 TO TEMP UNIQUE
COPY TO 新表
CLOSE ALL
ERASE TEMP.IDX
USE 新表
BROWSE

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-29 00:49
llljjjmmm1
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-23
收藏
得分:0 
嗯!我试了,很有效。

如果我们交流的知识有所保留,那么我们都将慢慢落后。
2006-09-29 12:59
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
没有检测1万多条件记录用上述代码执行的总时间是多少.楼主测试以后不妨写出来

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-30 00:21
llljjjmmm1
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-23
收藏
得分:0 

晕啊。我试了,速度是非常快的,几乎在1秒内完成,但是原库是我隨机产生了20000条记录,但过滤后只产生了50条记录,其他记录没有了。我把原库索引了后进去看了一下,没有那第多重复的记录。至少过滤后应有10000条以上记录才对啊。


如果我们交流的知识有所保留,那么我们都将慢慢落后。
2006-09-30 12:31
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 

那你得好好地检查了。是程序错了呢,还是数据本身的问题。
注意,我给你的程序是当所有字段的值为字符型的时候用字符运算符号+连接产生的,若这里被处理的数据是数值型则需要修改程序了:STR(字段1,2)+STR(字段2,2)+STR(字段3,2)+...+STR(字段6,2)
再试试看?


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-30 16:35
快速回复:如何更好的删除重复数据?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037130 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved