vfp数据库两张相同结构的表如何进行数据比对!(在线等!)
我先在有两个表,他们的结构是一样的。里面的内容有些是不同的,但是有很多是一样的。我想把他们之间不同的数据找出来!放到一张新表里面。请教各位了阿!我把我的毕生积分送给你们!...
我先在有两个表,他们的结构是一样的。里面的内容有些是不同的,但是有很多是一样的。我想把他们之间不同的数据找出来!放到一张新表里面。请教各位了阿!我把我的毕生积分送给你们!
例如:a表里面 有一个x记录和y记录,b表里也有有一个x记录和y记录,但是b表里面的y记录有一个字段和a表里的y记录不一样,那么就将这个y记录挑选出来。放到一个新的表里面! 展开
例如:a表里面 有一个x记录和y记录,b表里也有有一个x记录和y记录,但是b表里面的y记录有一个字段和a表里的y记录不一样,那么就将这个y记录挑选出来。放到一个新的表里面! 展开
展开全部
先看你的数据库有多少个字节,如果字节总数少于255最方便。新建一个数据库ttt.dbf,就一个字段AA,字符型,宽度254。
打开你的数据库,输入命令
copy to temp sdf
use ttt
appe from temp sdf
修改temp库结构,增加字段recn(C型,10位,用来保存记录号),sl(N型,宽度1,保存相同记录的条数),ctrl+w退出表设计器
repl all recn with str(recn(),10),sl with 1
inde on AA to 123
total on AA to 123
use 123
数据库123就是没有重复记录的新表,里面的sl是记录有相同的重复数量,recn是相同的第一条记录位于原表的记录号。
如果原来的表总宽度大于255,小于509,可以再增加一个字段AB,先按AA字段TOTAL,再按AB字段TOTAL,然后把这样形成的两个新表的记录号都到老表标出,标出的记录拷贝出来就是无完全相同记录的表了。
补充问题和这原理一样,如果a和b字段相同的话,可以用上面的办法整理出两个temp表,temp1和temp2。先把temp1的所有记录都加上删除标记,把把b中有不一样记录的恢复,余下的就是所需。
sele 2
use temp2
sele 1
use temp1
dele all
go top
do while !eof()
sele 2
loca for !aa=a.aa
if !eof()
sele 1
reca
endif
sele 1
skip
enddo
pack
这样temp1中的记录号代表的原a表的记录组成的新表就是询问者所需。
打开你的数据库,输入命令
copy to temp sdf
use ttt
appe from temp sdf
修改temp库结构,增加字段recn(C型,10位,用来保存记录号),sl(N型,宽度1,保存相同记录的条数),ctrl+w退出表设计器
repl all recn with str(recn(),10),sl with 1
inde on AA to 123
total on AA to 123
use 123
数据库123就是没有重复记录的新表,里面的sl是记录有相同的重复数量,recn是相同的第一条记录位于原表的记录号。
如果原来的表总宽度大于255,小于509,可以再增加一个字段AB,先按AA字段TOTAL,再按AB字段TOTAL,然后把这样形成的两个新表的记录号都到老表标出,标出的记录拷贝出来就是无完全相同记录的表了。
补充问题和这原理一样,如果a和b字段相同的话,可以用上面的办法整理出两个temp表,temp1和temp2。先把temp1的所有记录都加上删除标记,把把b中有不一样记录的恢复,余下的就是所需。
sele 2
use temp2
sele 1
use temp1
dele all
go top
do while !eof()
sele 2
loca for !aa=a.aa
if !eof()
sele 1
reca
endif
sele 1
skip
enddo
pack
这样temp1中的记录号代表的原a表的记录组成的新表就是询问者所需。
展开全部
可以用这样的方法 b1(xh,xm),b2(xh,xm)
use b1 in 1
use b2 in 2
do while !eof()
select 1
a=xh
select 2
locate for a=xh
if !found()
select 1
delete
skip
else
select 1
skip
endif
enddo
select b1
copy to c for deleted()
那么b1中以字段xh为区别的不同记录就存在c表中了
可行
试过
你要按照什么字段来区别都可以
每个字段都区别一下也成
如果有需要可以给你写一个通用的
任何两个表之间不同记录的筛选
use b1 in 1
use b2 in 2
do while !eof()
select 1
a=xh
select 2
locate for a=xh
if !found()
select 1
delete
skip
else
select 1
skip
endif
enddo
select b1
copy to c for deleted()
那么b1中以字段xh为区别的不同记录就存在c表中了
可行
试过
你要按照什么字段来区别都可以
每个字段都区别一下也成
如果有需要可以给你写一个通用的
任何两个表之间不同记录的筛选
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询