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