两个 ACCESS 数据表,相同结构,同有十几万条数据。请问用什么方法可以搜索出两表中其中一个字段中不相同的数据? (50分)

  • 主题发起人 主题发起人 Pc 狂迷
  • 开始时间 开始时间
P

Pc 狂迷

Unregistered / Unconfirmed
GUEST, unregistred user!
两个 ACCESS 数据表(ATable,BTable),结构相似(ATable 比BTable 多一个字段),同有
十几万条数据,并且除开ATable多出来的字段后,数据相同率达90%以上。
现在想把 ATable 中存在,但 BTable 中没有的数据在ATable 中删除,把 BTable 中存在,
但ATable中没有的新数据添加进ATable .
请问用什么方法可以做到?


 
我用2个 3 千 多记录的 Oracel ,从 表一 中找 表二中没有的.

我记得是 用了 好几十秒.

你有 十几万. 还是 ACCESS .

希望 大家 来说说看.

我个人 认为 工作 量是 十几万 * 十几万的 工作量.

(每找 一个, 就得 遍历一次表中的主键 吧? ) .
 
大概要很长很长时间吧,很慢,找一个就很慢了,但我不知道怎么找两个
 
用多线程查找
 
select 你的字段 from a ,b where a.字段<> b.字段
 
我知道

select a.field from a ,b where a.field = b.field;

可以找出两个表相同的数据,但 where a.field <> b.field 是否真的找出不同呢?
就只有试过才知了。
 
这个吗..你可以用一下计算字段,那个很好用,
 
增加一个标志字段,把相同的记录作一个标志就可以找出不同的记录
 
呵呵,几十万,有没有索引?
没有索引,而且还是在 access中,直接查找我想是很慢的了。除非你不是经常查找
 
SELECT *
FROM T1 where not exists (select * from t2 where t1.F1=t2.f1);
注意建相应索引,不然等S你。
 
这样可以吗? 首先设定所有字段为主键,然后:
try
insert;
except
next;
end;
 
不妨试试看:
查找T1中所有记录,定位第一条。
循环开始:
挑个T2中有的字段查找T2中是否存在。
不存在删除T1。
结束循环
查找T2中所有记录,定位第一条。
循环开始
挑俩表都有的字段,看T1中是否存在。
不存在插入到T1
循环结束
方法笨点可以实现,我建议您最好用触发器。
 
记录太多了,我有时碰到这事,问题搞定是给发个行么??
peixiaokai@163.com
谢谢了
 
从你的字面理解是只要把B中的BTable导到A中,再添加一字段,
再按A表添加这一字段所有值就可以了,不需要这么麻烦吧
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
739
SUNSTONE的Delphi笔记
S
后退
顶部