当前位置:编程学习 > VB >>

急!!!!关于ACCESS中清除重复数据

现在我手头上有二个数据表,一个为主表,一个为副表,我要做的是把副表中和主表重复的数据删除。可问题是主副表中的数据的名称并不完全一样,比如主表内是:中国上海,副表内是上海,可这二条数据又是相同的,如果查找并删除呢??
我想过用取每一条数据的关键字来截取,可是每一条数据的关键字又不一样,怎么办呢??
很急很急,求助各位大侠了!!在线等!! --------------------编程问答-------------------- 记录相同的判据是什么?至少说一下表结构吧。 --------------------编程问答-------------------- 系统开发之前不把基本工作做好是目前很多软件公司的大病.

设主表为A,副表为B,要过滤的字段为city.
select A.city, B.city from A,B
where instr(A.city, B.city)>0 or instr(B.city, A.city)
--------------------编程问答-------------------- 不小心按到回车了.再重新发好了.

设主表为A,副表为B,要过滤的字段为city, 主键为id.
select B.id, A.city, B.city from A,B 
where instr(A.city, B.city)>0 or instr(B.city, A.city)>0

这样可以得到重复字段的列表.如果此列表中的数据经人工检查后确实无错误后,
再把这些数据从B表中删除.
delete form B where B.id in
  select B.id from A,B 
  where instr(A.city, B.city)>0 or instr(B.city, A.city)>0


以上方法也适用于多个过滤字段的情况.不过对于大量数据来说,联表查询是很浪费时间的,
所以楼主应该在设计数据库的时候预先想到类似这样的情况,以更合理的方法设计数据库
以及规范数据格式. --------------------编程问答-------------------- 嗯嗯可是这样子的话工作量非常大
我说下我的表的结构
其实主表A的字段为:
Company name, company addr, tel, fax
副表B的字段和A一样
问题是A,B表内的公司表太不一致了,比如说:
A表中公司名是:通用电气
B表中可能叫:通用电气上海分公司
这样子,我就觉得很难排除了
主键的话设成公司名你看OK么?  --------------------编程问答-------------------- 这样的数据结构显然是有问题的。建议你在主表上再添加一个字段
company code.这个字段可以设计成varchar(50)。然后用一个有意义的串来代表。
比如设计成10位数。前三位代表国家,中间三位代表城市。等等。
--------------------编程问答-------------------- 如果tel, fax相同,就用tel,fax比较好了。
当然是个讨巧的办法。 --------------------编程问答-------------------- 主键设成什么都可以,只要是不会重复的字段就可以了.
目前已经搞成这个样子,想解决问题确实要浪费很多时间,而且我的方法也不能说是最佳的.
另外,LZ的这个例子:
A表中公司名是:通用电气 
B表中可能叫:通用电气上海分公司 
这不要说用电脑,就算是人工来看也是不好分清的.一般来说"通用电气上海分公司"很可能是"通用电气"的一个分公司,而不一定是"通用电气"的全名.两者到底是什么关系只有当事者才明白了.
目前就事论事的话,你可以参考6楼的方法,根据实际情况取巧解决了.

建议你更多的考虑一下将来的情况.最好专门做一个数据录入的小程序.这个程序要做到:
1.首先让录入者从已有的公司名列表中选择公司名.
2.直到发现列表中没有公司时,才把这个新的公司名添加到列表中.
3.如果公司名太多的话,可以增加一个逐字提示功能,就和我们常用的输入法一样.
--------------------编程问答-------------------- 不会,帮顶
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,