作者yscgk (中山的游客)
看板Database
标题[SQL ] 新手求助巢状No exists
时间Fri Aug 1 18:21:12 2014
(针对
SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
资料库名称:
MySQL
资料库版本:
客户端版本: 5.0.51a
内容/问题描述:
新手乱试试到头晕...还希望有高手解释一下
table如下
P S sp
--------- ---------- -------------
p pname s sname s p
1 p1 1 s1 1 1
2 p2 2 s2 1 2
2 1
以下是我的问题(虽然我猜实际上不会出现这种用法)
SELECT *
FROM s, p, sp
WHERE NOT
EXISTS (
SELECT *
FROM s, p
WHERE NOT
EXISTS (
SELECT *
FROM sp
WHERE s.s = sp.s
AND p.p = sp.p
)
);
为何这结果显示空呢???
我原先以为是先From中的s,p,sp先cross join後再判断Not exist的巢状子句
(这是我第一个问题,我不确定这想法对不对,google後又没发现相关的资料)
而巢状子句出来的结果是
sname s pname p
s2 2 p2 2
那为何not exists判别全部都是False呢?
我也试过把
From s,p,sp只改成 From s
结果也是为空
所以实在想不出为何是这结果了.....
真心希望有高手能指点一下...
到底SQL实际再电脑跑程式时顺序判断上有哪方面的资料可以看
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.238.195.54
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1406888475.A.CDB.html