标题:下列一条删除代码如何来理介?
取消只看楼主
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
结帖率:79.3%
已结贴  问题点数:20 回复次数:6 
下列一条删除代码如何来理介?
delete t1 from  mycursor1 t1 join  mycursor2 on t1.field1>5 and  mycursor2.field1=t1.field1, mycursor3 where  mycursor2.field1= mycursor3.field1
此条代码如何来理介?
搜索更多相关主题的帖子: where 如何 
2015-05-09 16:00
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
t1 join  mycursor2 on t1.field1>5 and  mycursor2.field1=t1.field1, mycursor3 where  mycursor2.field1= mycursor3.field1
红色的表示T1与mycursor2 二表内連,条件为t1.field1>5 and  mycursor2.field1=t1.field1
而兰色的mycursor3 where  mycursor2.field1= mycursor3.field1与前面連接条件有何关系呢?
2015-05-10 10:21
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用不懂才问在2015-5-10 13:31:15的发言:

蓝色部分,从where开始,表示删除的条件吧?
 
之前的语句,应该是表联接的条件
联接应是 T1 与 mycursor2 联接的条件是on t1.field1>5 and  mycursor2.field1=t1.field1
哪mycursor3 起何作用?
2015-05-10 16:42
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用sdta在2015-5-10 20:08:38的发言:

如果不会看帮助文件,估计继续学习下去,有问不完的问题。
官腔
2015-05-11 10:42
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用kiff在2015-5-11 15:08:04的发言:

DELETE 用连接是多余的。
可改成这样:
DELETE mycursor1 from mycursor2,mycursor3 where mycursor1.field1>5 and  mycursor1.field1=mycursor2.field1 AND mycursor2.field1= mycursor3.field1
你的例子是我举的例子的另一种形式,它们都是张洪举的书中的
2015-05-11 15:54
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
摘自:请注意以下红色与兰色标记的二条命令 及产生的结果的一样的。
相互关联的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 编辑 ]
2015-05-11 16:08
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用kiff在2015-5-11 16:40:33的发言:

前面是用ON 把两表联系起来,然后再通过 WHERE 让MyCursor2与MyCursor3关联,这样三个表就关联了。本来就是用 WHERE 就可以关联三个表的,而用了 ON 反而难以清晰。
如用了on 使人理介为 MyCursor1与MyCursor2联接为一个中间表,然后这个中间表再与MyCursor3 关联。

DELETE T1 ;

FROM MyCursor1 T1 JOIN MyCursor2 ON T1.field1>5 AND MyCursor2.field1=T1.field1, MyCursor3 ;

WHERE MyCursor2.field1=MyCursor3.field1

( T1 JOIN MyCursor2 ON T1.field1>5 AND MyCursor2.field1=T1.field1,变成中间表)
2015-05-11 17:07



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




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

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