sql exists/not exists

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

相關文章
相關標籤/搜索