先看你的数据库有多少个字节,如果字节总数少于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表的记录组成的新表就是询问者所需。
可以用这样的方法 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表中了
可行
试过
你要按照什么字段来区别都可以
每个字段都区别一下也成
如果有需要可以给你写一个通用的
任何两个表之间不同记录的筛选