主题:从a表中删除符合条件的记录
zhengxinhai
[专家分:30] 发布于 2008-07-09 18:16:00
有两个表a表、b表,a表有编号、姓名、成绩合计字段,b表中有编号、姓名、数学分数字段,a表b表的编号、姓名有相同的记录,一一对应。
请问各位怎样从a表中删除b表中数学分数<60的记录呢?注意a表b表有编号不同而姓名相同的记录即有重名的记录
回复列表 (共10个回复)
沙发
cbl518 [专家分:57140] 发布于 2008-07-09 21:24:00
DELETE a表 FROM b表 WHERE a表.编号 = b表.编号 and b表.数学分数 < 60
板凳
zhengxinhai [专家分:30] 发布于 2008-07-09 21:43:00
cbl518老师还是谢谢你的热情帮助。
在b表中有重名的学生,重名学生中有分数小于60的也有大于60的,用你的语名,a表中没有删除任何记录。
我有了两个scan 处理了问题,不过我觉得有更好的语句处理,请大家给予帮忙。
3 楼
cbl518 [专家分:57140] 发布于 2008-07-09 21:50:00
vfp 6
SELECT * FROM a表 INTO CURSOR temp
USE IN a表
SELECT A.* FROM temp A LEFT OUTER JOIN b表 B ON a.编号 = b.编号 ;
WHERE !(b.数学分数 < 60) OR b.编号 is null INTO TABLE 路径\a表
use in temp
4 楼
cbl518 [专家分:57140] 发布于 2008-07-09 21:52:00
[quote]cbl518老师还是谢谢你的热情帮助。
在b表中有重名的学生,重名学生中有分数小于60的也有大于60的,用你的语名,a表中没有删除任何记录。
我有了两个scan 处理了问题,不过我觉得有更好的语句处理,请大家给予帮忙。
[/quote]
该语句用于 vfp 9 版本才行!
5 楼
zhengxinhai [专家分:30] 发布于 2008-07-09 21:53:00
cbl518老师我用的vf9.0,怎样写以上语句呢?
谢谢!!
6 楼
cbl518 [专家分:57140] 发布于 2008-07-09 21:54:00
用 3 楼的帖子不行吗?
7 楼
cbl518 [专家分:57140] 发布于 2008-07-09 21:57:00
vfp 9 用一楼的代码绝对没问题!
你的 qq 号!
8 楼
zhengxinhai [专家分:30] 发布于 2008-07-09 21:58:00
DELETE a表 FROM b表 WHERE a表.编号 = b表.编号 and b表.数学分数 < 60
cbl518
不行。
SELECT * FROM a表 INTO CURSOR temp
USE IN a表
SELECT A.* FROM temp A LEFT OUTER JOIN b表 B ON a.编号 = b.编号 ;
WHERE !(b.数学分数 < 60) OR b.编号 is null INTO TABLE 路径\a表
use in temp有点复杂,不如用两个scan简单,不过上述语句我的vf功底还不行,有点看不清。
9 楼
zhengxinhai [专家分:30] 发布于 2008-07-09 22:05:00
我做是一个工程,有类似问题,各种各样的方法用了不少,也包括cb1518老师给的2楼语句,都可以说结果不佳,最后还是笨方法解决了。
10 楼
cbl518 [专家分:57140] 发布于 2008-07-09 22:07:00
是啊!
看来你还是一个顶高的高手啰!
我不懂得用循环扫描语句啊,要向你好好儿学习!
可惜!可惜!可惜!
你这个独一无二的人才啊!!!!
我来回复