标题:VFP中比较两个表,查看一个表中多的人员是谁,表中数据很多,有两万条,有没 ...
只看楼主
dznbomingzhi
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2019-5-26
结帖率:80%
已结贴  问题点数:2 回复次数:8 
VFP中比较两个表,查看一个表中多的人员是谁,表中数据很多,有两万条,有没有办法提高校核速度?
VFP中比较两个表,查看一个表中多的人员是谁,表中数据很多,有两万条,有没有办法提高校核速度?
打个比方,有两个人员表,分别是ry1 字段为姓名xm c(10),身份证号sfzh c(20),20000条数据;ry2 字段为姓名,xm c(10),身份证号sfzh c(20),20001条数据,两个表中身份证号唯一,现在要比对出ry2表中多的人是谁,我用以下程序,速度太慢,得半小时才能出结果。
set talk off
use ry2
for i=1 to recc()
sele sfzh from ry1 into array r_1 wher recn()=i
use ry1
loca for sfzh=r_1
if not found()
?r_1
endif
endfor


搜索更多相关主题的帖子: 两个表 数据 VFP 表中 速度 
2020-01-28 14:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:1 
select * from ry2 where sfzh not in (select sfzh from ry1)

坚守VFP最后的阵地
2020-01-28 14:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
或者
select sfzh from ry2 into array ary2
select sfzh from ry1 into array ary1
用 ascan()搜索

坚守VFP最后的阵地
2020-01-28 14:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:1 
SELECT ry1
INDEX on sfzh TAG t_sfzh
SELECT ry2
SET RELATION TO sfzh INTO "ry1"
SCAN FOR ry2.sfzh != ry1.sfzh
    ? ry2.xm,ry2.sfzh
ENDSCAN
2020-01-28 18:48
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:1 
如果只想查看 select * from ry2 into cursor dyry where !(sfzh in (select distinct sfzh from ry1))
若想保留结果 select * from ry2 into dbf dyry where !(sfzh in (select distinct sfzh from ry1))

dBase有人接盘了。
2020-01-28 20:42
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:1 
以下是引用dznbomingzhi在2020-1-28 14:20:10的发言:

VFP中比较两个表,查看一个表中多的人员是谁,表中数据很多,有两万条,有没有办法提高校核速度?
打个比方,有两个人员表,分别是ry1 字段为姓名xm c(10),身份证号sfzh c(20),20000条数据;ry2 字段为姓名,xm c(10),身份证号sfzh c(20),20001条数据,两个表中身份证号唯一,现在要比对出ry2表中多的人是谁,我用以下程序,速度太慢,得半小时才能出结果。
set talk off
use ry2
for i=1 to recc()
sele sfzh from ry1 into array r_1 wher recn()=i
use ry1
loca for sfzh=r_1
if not found()
?r_1
endif
endfor


这个表述真有点难懂
2020-02-02 14:52
阿拉丁8888
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-2-21
得分:0 
SELECT ry1
INDEX on sfzh TAG t_sfzh
SELECT ry2
SET RELATION TO sfzh INTO "ry1"
brow for empty(ry1.t_sfzh)
* 借用楼上的现成语句,我其实只写了最后一句。
* brow 浏览内容将只包含你想看到的!估计5以内就出结果了。
* 也可以复制出来:copy to xxx for empty(ry1.t_sfzh)
2020-02-08 21:28
henanlifeng
Rank: 1
等 级:新手上路
威 望:1
帖 子:4
专家分:0
注 册:2020-3-19
得分:0 
也可以用sele -left join,然后brow for empty(ry1.t_sfzh)
2020-03-19 09:48
sxy166
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:68
专家分:127
注 册:2012-3-28
得分:0 
SELECT ry1
INDEX on sfzh TAG t_sfzh
SELECT ry2
SET RELATION TO sfzh INTO "ry1"
brow for sfzh#ry1.sfzh
我也改最后一句
2020-03-20 08:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499030-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.268937 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved