找出两个表的不同记录。(50分)

  • 主题发起人 主题发起人 ttaa
  • 开始时间 开始时间
T

ttaa

Unregistered / Unconfirmed
GUEST, unregistred user!
两个excel表,其实是一模一样的。
但因为是分开两个人做的,有些地方可能输入错误而导致数值不等。
为什么两个人做?而不是一个人做好直接拷贝个另一个人呢。有他自己的原因。
现在我想知道的是怎样快速的将它们的不同找出来。
例如甲做了A表
model qty .........
da11 20
da22 50
cd00 30

乙做了B表
model qty .........
da11 20
da22 55
cd00 30

其中model是唯一的.
da22的qty不同了.就要找出来.因为字段很多,可能是其他的字段数值不同.
怎样找出它们有不同的地方呢?
是不是每条记录,每个字段的扫描阿?有没有好的办法核对它们的异同?
 
用两个数据集控件分别打开两个表,做个循环逐个扫描比较吧,好象是没有什么别的好办法。
 
select a.modal,a.qty,b.qty
from 表1 a, 表2 b
wehre a.modal=b.modal
and a.qty<>b.qty
 
to svw0506:这不行,如果qty相等,而其他的字段不相等,就有问题了。
to hunterteam:逐个核对,感觉效率会很低。不过好像只能如此。
有没有人做过类似的?给我高招吧。
 
//那你可以每个字段都比较呀
select a.modal,a.qty,b.qty
from 表1 a, 表2 b
wehre a.modal=b.modal
and (a.qty<>b.qty or a.field1<>b.field1 or a.field2<>b.field2 )
 
select a.modal,a.qty,b.qty
from 表1 a, 表2 b
wehre a.modal=b.modal
and a.qty<>b.qty or a.其他字段<>b.其他字段
友好方法告诉我一下
 
Oracle 下可以如下:SQL Server下应该也可以
Select col1,col2,col3 from table1 minus (select col1,col2,col3 from table2)
 
这样的话确实比较麻烦,在此就没有所谓的唯一字段了,所以最好的方法就是取出一个表里的数据
然后遍历另外一个表直到完成。
 
SQL Server下无效[:(]
 
Excel?噢,那更没戏了。
 
同意svw0506办法,我遇到过同样的问题,我需要编一个数据库效验程序,不同的是我用的是
.dbf数据表,用SQL是最好的选择,2000条对1800条的记录,效验4个字段,用时30多秒已经是
很快了。类似的批量处理数据的问题,最好用SQL。
 
问题是已经做成excel了,有十多二十个字段,
where a.model=b.model
and (a.qty<>b.qty or a.field1<>b.field1 or a.field2<>b.field2.....a.field20<>b.field20 )
括号里岂不是些很长很长?
看来只有遍历了,觉得也是很烦的。
 
好像没有别的方法,
 
只是要这样的结果?并不需要用delphi吧?
以前一个朋友为了做版本管理软件,需要你所说的这种功能。当然这只是版本管理软件中的
一个方面。
但是如果你只是要结果的话,ultraedit文本编辑软件就可实现你的要求。
先转为格式相同的文本文件,然后让ultraedit进行比对,直接得到两个文件中不同的部分。
 
接受答案了吧。
 
后退
顶部