回 帖 发 新 帖 刷新版面

主题:从a表中删除符合条件的记录

有两个表a表、b表,a表有编号、姓名、成绩合计字段,b表中有编号、姓名、数学分数字段,a表b表的编号、姓名有相同的记录,一一对应。
请问各位怎样从a表中删除b表中数学分数<60的记录呢?注意a表b表有编号不同而姓名相同的记录即有重名的记录

回复列表 (共10个回复)

沙发

DELETE a表 FROM b表 WHERE a表.编号 = b表.编号 and b表.数学分数 < 60

板凳

cbl518老师还是谢谢你的热情帮助。
在b表中有重名的学生,重名学生中有分数小于60的也有大于60的,用你的语名,a表中没有删除任何记录。
我有了两个scan 处理了问题,不过我觉得有更好的语句处理,请大家给予帮忙。

3 楼

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 楼

[quote]cbl518老师还是谢谢你的热情帮助。
在b表中有重名的学生,重名学生中有分数小于60的也有大于60的,用你的语名,a表中没有删除任何记录。
我有了两个scan 处理了问题,不过我觉得有更好的语句处理,请大家给予帮忙。
[/quote]

该语句用于 vfp 9 版本才行!

5 楼

cbl518老师我用的vf9.0,怎样写以上语句呢?
谢谢!!

6 楼

用 3 楼的帖子不行吗?

7 楼

vfp 9 用一楼的代码绝对没问题!
你的 qq 号!

8 楼

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 楼

我做是一个工程,有类似问题,各种各样的方法用了不少,也包括cb1518老师给的2楼语句,都可以说结果不佳,最后还是笨方法解决了。

10 楼

是啊!
看来你还是一个顶高的高手啰!
我不懂得用循环扫描语句啊,要向你好好儿学习!


可惜!可惜!可惜!
你这个独一无二的人才啊!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册