※ 引述《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
这样的结果...
搞得我好乱阿= ="