Re: [SQL ] 新手求助巢状No exists

楼主: yscgk (中山的游客)   2014-08-01 20:46:21
※ 引述《bohei (run and fall)》之铭言:
: 小弟是用Oracle的,所以不确定是不是100%一样,
: 第一层的EXISTS因为没下任何跟外面相关连的条件,
: 所以当有select row即视为TRUE,再遇到NOT,当然就变成FALSE
: 你试着在第一层的EXISTS加上关联条件,就可以得到不同的结果了~
: GO!
谢谢
刚刚试了一下 还是不太懂
然后之前
SELECT *
FROM s, p, sp
WHERE NOT
EXISTS (
SELECT *
FROM s
WHERE NOT
EXISTS (
SELECT *
FROM sp
WHERE s.s = sp.s
AND p.p = sp.p
)
);
上面这一串 我只改了第一个Not exists里的From
从s,p改成s
就跑出
Sname s PName p s p
s1 1 p1 1 1 1
s2 2 p1 1 1 1
s1 1 p1 1 1 2
s2 2 p1 1 1 2
s1 1 p1 1 2 1
s2 2 p1 1 2 1
这样的结果...
搞得我好乱阿= ="
作者: bohei (run and fall)   2014-08-01 21:17:00
等等....你最里面的s跟p到底是指哪儿的s跟p?你先试着把table都给别名,不然连自己在写什么都混乱了,又要怎么去解读SELECT后的结果呢另外,execution plan可以看SQL细部的计画你最后的例子,就是一开始讲的那样吧,你应该去看一下EXISTS是怎么决定是否让主SELEC回传的三层分别以1.2.3来表示好了,我一开始就以为你的意思是1与2连结 2与3连结,所以我没考虑到1直接跟3,这部分我不确定
楼主: yscgk (中山的游客)   2014-08-02 00:23:00
新手上路.有时我也不知我在做啥..可以安心睡了~谢谢你

Links booklink

Contact Us: admin [ a t ] ucptt.com