exists : 強調的是是否返回結果集,不要求知道返回什麼, 好比:
select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要
exists引導的子句有結果集返回,那麼exists這個條件就算成立了,你們注意返回的字段始終爲1,若是改爲「select 2 from grade where ...」,那麼返回的字段就是2,這個數字沒有意義。因此exists子句不在意返回什麼,而是在意是否是有結果集返回。
而 exists 與 in 最大的區別在於 in引導的子句只能返回一個字段,好比:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三個字段,這是不正確的,exists子句是容許的,但in只容許有一個字段返回,在1,2,3中隨便去了兩個字段便可。spa