摘自:
请注意以下红色与兰色标记的二条命令 及产生的结果的一样的。
相互关联的DELETE-SQL命令
Visual FoxPro 9.0现在支持使用DELETE-SQL进行相互关联删除。
如果一个FROM子句中包含有多个表,则DELETE后面的名称是必需的,并且被指定为删除操作的目标,该名称可以是一个表名称、别名或是一个文件名称。DELETE-SQL命令选择目标表的逻辑和FROM子句的语法限制与UPDATE-SQL命令相同,见前面的介绍。
下面是相互关联DELETE命令的语法格式:
DELETE [alias] FROM alias1 [, alias2 … ] … WHERE …
参考下列代码:
CREATE CURSOR MyCursor1 (field1 I , field2 I NULL,field3 I NULL)
INSERT INTO MyCursor1 VALUES (1,1,0)
INSERT INTO MyCursor1 VALUES (2,2,0)
INSERT INTO MyCursor1 VALUES (5,5,0)
INSERT INTO MyCursor1 VALUES (6,6,0)
INSERT INTO MyCursor1 VALUES (7,7,0)
INSERT INTO MyCursor1 VALUES (8,8,0)
INSERT INTO MyCursor1 VALUES (9,9,0)
CREATE CURSOR MyCursor2 (field1 I , field2 I)
INSERT INTO MyCursor2 VALUES (1,10)
INSERT INTO MyCursor2 VALUES (2,20)
INSERT INTO MyCursor2 VALUES (3,30)
INSERT INTO MyCursor2 VALUES (4,40)
INSERT INTO MyCursor2 VALUES (5,50)
INSERT INTO MyCursor2 VALUES (6,60)
INSERT INTO MyCursor2 VALUES (7,70)
INSERT INTO MyCursor2 VALUES (8,80)
CREATE CURSOR MyCursor3 (field1 I , field2 I)
INSERT INTO MyCursor3 VALUES (6,600)
INSERT INTO MyCursor3 VALUES (7,700)
DELETE MyCursor1 FROM MyCursor2 ;
WHERE MyCursor1.field1>5 AND MyCursor2.field1=MyCursor1.field1
SELECT MyCursor1
LIST OFF
RECALL ALL &&撤消删除
DELETE MyCursor1 FROM MyCursor2, MyCursor3 ;
WHERE MyCursor1.field1>5 AND MyCursor2.field1=MyCursor1.field1 AND MyCursor2.field1=MyCursor3.field1
SELECT MyCursor1
LIST OFF
RECALL ALL
DELETE FROM MyCursor1 WHERE MyCursor1.field1>5
SELECT MyCursor1
LIST OFF
RECALL ALL
DELETE MyCursor1 from MyCursor1 WHERE MyCursor1.field1>5
RECALL ALL IN MyCursor1
DELETE T1 ;
FROM MyCursor1 T1 JOIN MyCursor2 ON T1.field1>5 AND MyCursor2.field1=T1.field1, MyCursor3 ;
WHERE MyCursor2.field1=MyCursor3.field1
RECALL ALL IN MyCursor1
执行上述代码,几次删除的结果如图8-38所示(记录前的“*”表示该记录被添加了删除标记)。读者如果对DELETE命令中的FROM子句理解起来比较困难,也可以参考前面在UPDATE命令中介绍的方法,把FROM子句转换到SELECT中来获取查询结果,进行分析。
二条命令的结果是一样的。
请问
红色标记的命令中
MyCursor3 及,(逗号)前面的语句成何关系?
[
本帖最后由 sylknb 于 2015-5-11 16:17 编辑 ]