帶有ANY或ALL謂詞的子查詢

2021-10-10 08:05:16 字數 1440 閱讀 1047

子查詢返回單值時可以用比較運算子,而使用any或all謂詞時則必須同時使用比較

運算子,其語義為:

>any   大於子查詢結果的某個值

>all   大於子查詢結果中的所有值

=any   大於等於子查詢結果中的某個值

>=all   大於等於子查詢結果中的所有值

<=any   小於等於子查詢結果中的某個值

<=all   小於等於子查詢結果中的所有值

=any   等於子查詢結果中的某個值

=all   等於子查詢結果中的所有值(通常沒有實際意義)

!=(或<>)any  不等於子查詢結果中的某個值

!=(或<>)all  不等於子查詢結果中的任何乙個值

例:查詢其他系中比資訊係某一學生年齡小的學生姓名和年齡

select sname,sage

from student

where sage'is'

結果如下:

sname  sage

-------------------------------------

王敏  18

dbms執行此查詢時,首先處理子查詢,找出is系中所有學生的年齡,構成乙個集合

(19,18)。然後處理父查詢,找所有不是is系且年齡小於19或18的學生。

本查詢可以用集函式來實現,首先用子查詢找出is系中最大年齡(19),

然後在父查詢中查所有非is系且年齡小於19歲的學生姓名及年齡,sql語句如下:

select sname,sage

from student

where sage<

(select max(sage)

from student

where sdept='is')

and sdept<>'is'

例二:查詢其他系中比資訊系所有學生年齡都小的學生姓名及年齡。

select sname,sage

from student

where sage'is'

查詢結果為空表,本查詢同樣也可以用集函式來實現,sql語句如下:

select sname,sage

from student

where sage<

(select min(sage)

from student

where sdept='is'

)and sdept<>'is'

事實上,用集函式來實現子查詢通常比直接用any或all查詢效率要高,any與all與

集函式的對應關係如下所示

=<>或!=

<

<=

>

>=

anyin

-<=max

>min

>=min

all--

not in

<=min

>max

>=max

帶有ANY SOME 或ALL謂詞的子查詢

子查詢返回單值時可以用比較運算子,但返回多值時要用any 有的系統用some 或all謂詞修飾符。而使用any或all謂詞時則必須同時使用比較運算子。其語義為 any 大於子查詢結果中的某個值 all 大於子查詢結果中的所有值 any 小於子查詢結果中的某個值 all 小於子查詢結果中的所有值 an...

sql酷斃的any和all

今天下午從6點多想到現在,倆小時啊!我這是什麼腦袋啊!尤其any,真是有點暈,現在懂了。any和all通常與關係運算子一起使用,實現對子查詢返回值的判斷工作,如下 any比子查詢返回的任意結果大就行,即大於返回結果的最小值。any就是等於返回結果的任意值就行,等價於in。all比子查詢返回的所有結果...

python中的any 和all 函式

對於all x 引數x中的所有元素不為0 或false,則返回true,否則返回false。另外,如果x為空物件,也是返回true。例如 a all a b c d print 列表list,元素都不為空或0 a b all a b d print 列表list,存在乙個為空的元素 b c all ...