Re: [SQL ] 新手求助巢狀No exists
※ 引述《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
這樣的結果...
搞得我好亂阿= ="
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.195.54
※ 文章網址: http://www.ptt.cc/bbs/Database/M.1406897183.A.D44.html
→
08/01 21:17, , 1F
08/01 21:17, 1F
→
08/01 21:22, , 2F
08/01 21:22, 2F
→
08/01 21:22, , 3F
08/01 21:22, 3F
→
08/01 21:29, , 4F
08/01 21:29, 4F
剛剛試了一下
EXPLAIN SELECT *
FROM s, p, sp
WHERE NOT
EXISTS (
SELECT *
FROM s AS ss, p AS pp
WHERE NOT
EXISTS (
SELECT *
FROM sp
WHERE s.s = sp.s
AND p.p = sp.p
)
);
節錄輸出
id select_type table type key rows Extra
1 PRIMARY s ALL NULL 2
1 PRIMARY p ALL NULL 2 Using where
1 PRIMARY sp index PRIMARY 3 Using index
2 DEP~ SUBQUERY ss index PRIMARY 2 Using index
2 DEP~ SUBQUERY pp index PRIMARY 2 Using where;Using index
3 DEP~ SUBQUERY sp eq_ref PRIMARY 1 Using index
看來似乎是指向中間的s和p
只是小弟不才
看不太出來這說明了什麼....Orz
※ 編輯: yscgk (36.238.195.54), 08/01/2014 23:31:52
後來發現我裡面沒改
以下是改變的部分
EXPLAIN SELECT *
FROM s, p, sp
WHERE NOT
EXISTS (
SELECT *
FROM s AS ss, p AS pp
WHERE NOT
EXISTS (
SELECT *
FROM sp AS spsp
WHERE ss.s = spsp.s
AND pp.p = spsp.p
)
);
輸出
id select_type table type key rows Extra
1 PRIMARY NULL NULL NULL NULL Impossible WHERE
2 SUBQUERY ss index PRIMARY 2 Using index
2 SUBQUERY pp index PRIMARY 2 Using where; Using index
3 DEP~ SUBQUERY spsp eq_ref PRIMARY 1 Using index
這個看起來就是輸出為空
不過有了這些 我也還是不會解釋
其實別名這問題一直困惑著我
別名後的Table 和原來的table是怎樣的情況阿...
※ 編輯: yscgk (36.238.195.54), 08/01/2014 23:45:31
→
08/01 23:54, , 5F
08/01 23:54, 5F
→
08/01 23:54, , 6F
08/01 23:54, 6F
謝謝bohei大大 大感謝
就如你所說的
我在兩個not exists內都加入了和外面的連結後(s.s=ss.s...etc)
就出現了滿意的結果
Sname s PName p s p
s1 1 p1 1 1 1
s1 1 p2 2 1 2
s2 2 p1 1 2 1
所以說別名過後的table操作的狀況
和主select的table是沒關係的(不知道這樣說對不對)
真的謝謝bohei大大
※ 編輯: yscgk (36.238.195.54), 08/02/2014 00:17:24
→
08/02 00:19, , 7F
08/02 00:19, 7F
→
08/02 00:20, , 8F
08/02 00:20, 8F
→
08/02 00:23, , 9F
08/02 00:23, 9F
討論串 (同標題文章)