| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1841 人关注过本帖
标题:咋能去除相同记录
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
里面有一个日期是重复的

dele all for ffdate=''
pack

搞定

DO IT YOURSELF !
2013-05-06 15:59
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 21楼 wp231957
厉害
2013-05-06 16:04
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
恭喜W版解决了问题。不过,我觉得给我们出了个很好的课题,是得研究一下如何去除部分字段重复的记录,并保留第一条。
2013-05-06 16:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用taifu945在2013-5-6 16:10:19的发言:

恭喜W版解决了问题。不过,我觉得给我们出了个很好的课题,是得研究一下如何去除部分字段重复的记录,并保留第一条。
是啊  虽然我的问题解决了  但是这个问题没解决

DO IT YOURSELF !
2013-05-06 16:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
结题了就意味着问题已解决

授人以渔,不授人以鱼。
2013-05-06 21:56
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
向W版通报一下,已经研究出来了。假设一个表叫T1.DBF,里面有6条记录。其中4条记录两两重复,另两条记录不重复,但这两条记录中有一条记录与重复记录中的一对是姓名相重。为了模拟案例中的效果,我另外加了两个字段:其它1和其它2。其它1字段不重复,而其它2字段对于重复的人来说也重复。
图片附件: 游客没有浏览图片的权限,请 登录注册

命令行是:
SELECT T4.* ;
   FROM (SELECT RECNO() 序号,T1.* ;
            FROM T1
) T4 ;
      JOIN (SELECT MIN(T2.序号) 序号,T2.SfzXm ;
               FROM (
SELECT RECNO() 序号,身份证号+姓名 SfzXM ;
                        FROM T1
) T2 ;
               GROUP BY T2.SfzXm
) T3 ;
      ON T4.序号=T3.序号
其中,红色部分用来把各条记录的记录号弄成一个字段记录下来。这一步相当重要,后面比对就是靠记录号匹配(因为身份证号和姓名有重复的话,一匹配就是多条记录,达不到过滤的目的,而记录号始终是唯一的);绿色部分是从6条记录中筛选出身份证号+姓名不重复的第一条记录,也就是重复记录中记录号最小的那条。经过绿色部分的运行后,就生成一个比对的基准表—T3;桔色部分就是用原表记录号去匹配基准表的记录号,只有在基准表中存在记录号的记录才会被最后输出,也就达到了目的。之所以要固定记录号,一方面是因为这种不是全部字段都重复的记录无法用DISTINCT关键字过滤,只能靠记录号比对;另一方面则是记录号在命令执行中是滚动的,无法直接比对,只有把它化成一个字段的值固定下来才可以。

这种解决方法适用于记录数、字段数比较多,而只有其中极少数字段不重复,无法用DISTINCT关键字过滤的场合。你可以不用去管哪些字段重复、不重复,只要抓住你想过滤的字段即可。
2013-05-06 23:01
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
要删除重复记录,只保留其中的一条记录。
利用VFP 6。0  SELECT-SQL 的分组特点(不规范的SQL语句)。是很容易做到的.
例如,你认为表中字段  身份证号、姓名 不应出现重复记录。就这样处理:

*SET ENGINEBEHAVIOR 70  &&如果是VFP9。0,需加上这语句兼容VFP6。0用法。
SELECT * FROM 表 GROUP BY 身份证号、姓名
2013-05-06 23:56
快速回复:咋能去除相同记录
数据加载中...
 
   



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

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