子查詢返回單值時可以用比較運算子,而使用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 ...