Office中国论坛/Access中国论坛

标题: “我和老汉不得不说的事”——浅谈内联接删除查询 [打印本页]

作者: roych    时间: 2011-12-6 19:58
标题: “我和老汉不得不说的事”——浅谈内联接删除查询
       大约十几年前,一本名为《我和×××不得不说的事》畅销全国。无论怎么说,这些“不得不说”的事,让而当时已淡出娱乐圈的×××,再次成为大家争议的焦点,成为茶余饭后的谈资。后来,这些行为有了一个新名词——“炒作”。再后来,这些人更是成了一个党派——“标题党”。
       写到这里,似乎已经在宣告Roy俨然已经入党了。
       和老汉不得不说的事,是发生在去年的。那时候版友sxgaobo写了一个内联接删除查询语句,但是执行时出错(应该是出现了下面的提示):
        [attach]47554[/attach]
       当时,Roy写了一个子查询例子并上传,还沾沾自喜了好一会儿。没想到老汉一板砖拍过来,“哪有那么复杂?”,祭出了一个Dlookup法宝,愣是把Roy吓得目瞪口呆。这还不算什么,最后老汉干脆把毛主席“宜将剩勇追穷寇”的精神贯彻到底,写了内联接查询,再次把Roy拍得天旋地转,立时七荤八素。Roy一时间无地自容,准备去灌水区投水自尽,无奈水太浅,而且Roy还会潜水,于是决定每天卧床尝帖子(卧薪尝胆太老套了,不如来点创意,是不是?)(详见《请教sql语句,错哪了?》)。
       时隔一年才发现,老汉和ZYP所以为的DELETE不能针对两个及以上的表进行并非真理。于是翻出旧账,成就了此文。
       以上故事,纯属虚构,如有雷同,实属巧合。其实,这里没有和老汉叫板的意思,只是标题党嘛,你懂的……
       事实上,真正的症结在于两个表之间并没有建立确定的关系(两个表之间的多对多关系,当然是不算的)。也就是说,索引的建立才是关键(详细看附件)。
       附件中有多个删除查询,主要用于做对比(可展开SQL视图做参考),并和大家一起探讨而已。从执行效率上来讲,内联接删除查询较优,而子查询删除则更适于用在SQL Sever。
[attach]47555[/attach]
作者: t小宝    时间: 2011-12-6 20:26
一年前老汉一砖板,Roy现在才定过神,呵呵
支持真理探讨!
作者: chaosheng    时间: 2011-12-6 22:33
2个表记录要一并删除的肯定有联系,多对多可转一对多,用级联删除就好了
至于根据一表条件删除一对一的另一表记录,其实是表设计复杂化,就用一表就好,原来要删的表对应字段就更改为null,实是update
至于根据主表条件删除一对多的子表记录,看来在Access用联接表条件解决效率高,但用子查询是sql正统.只不过access的子查询好像都很不行.
作者: wang1950317    时间: 2011-12-6 23:18
和老汉故事很生动啊!期待续集!
作者: yanwei82123300    时间: 2011-12-7 08:22
哈!老汉老师要挨板砖了{:soso_e113:}
作者: 轻风    时间: 2011-12-7 09:30
我还是先闪一边,免得被板砖误砸。{:soso_e133:}
作者: ycxchen    时间: 2011-12-7 17:16
不错,学习!
作者: 风行68    时间: 2012-1-29 13:27
总结得真好
作者: todaynew    时间: 2012-1-30 19:21
不至于吧?
作者: Bonny_新乐    时间: 2015-8-3 21:49
学习了。新手学习东东真麻烦啊!
作者: purplerose    时间: 2016-3-18 14:57
ROYCH   好可怜呀 ,老汉是不是todaynew 呀, 会这么凶吗?
作者: 522650696    时间: 2016-4-26 21:21
寓教于乐




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3