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

楼主: smlboby (波比)   2014-08-04 19:52:40
(以下用 T-SQL 语法)
EXISTS (
SELECT 1 AS COL_A
)
以上子句为单笔单栏资料
只要 EXISTS 后面的子句有资料回传, 就会是 true
你用 NOT EXISTS + 子句
而子句回传 2 2 的一笔资料
所以 NOT EXISTS 永远都会是 false
如果 2 2 这笔才是你要的 (Table s join Table p 且不存在于 Table sp 内)
那只要下
SELECT *
FROM S, P
WHERE NOT EXISTS (
SELECT 1
FROM SP
WHERE SP.s = S.s
AND SP.p = P.p
)
※ 引述《yscgk (中山的游客)》之铭言:
: ※ 引述《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
: 这样的结果...
: 搞得我好乱阿= ="

Links booklink

Contact Us: admin [ a t ] ucptt.com