MySQL數據庫 in、all、any、some的區別


MySQL數據庫 in、all、any、some的區別

理解 in\all\any\some

  • in:范圍內存在,就返回true。
    • in(a,b,c)可以理解成 a or b or c
    • 也可以這么理解: in 的作用與 =any的作用相同
  • all:所有,必須和子查詢返回的結果完全一致,才會返回true
    • 用法:ALL(select column from table [where 條件])
    • all中的子查詢結果可以理解成 ...and...and...and...
    • 如果括號中的結果是空表,則結果都為true
    • 如果子查詢中有null值,那么最終結果都是null
  • any:任一,與子查詢返回的結果中任一一個結果相同,就返回true。
    • 用法:any(select column from table [where 條件])
    • 子查詢的結果可以理解成 ...or...or...
    • 如果子查詢存在空表或null的情況, 那么結果都是null
  • some: 是any的別名,不常用

all\any\的使用

  • 先來看看下面的語句
# in
SELECT * FROM score WHERE degree IN(86,88,90);

# all
SELECT * FROM score WHERE degree > ALL(86,88,90); #錯誤語句
SELECT * FROM score WHERE degree > ALL(SELECT degree FROM score WHERE degree BETWEEN 70 AND 90);

# any
SELECT * FROM score WHERE degree > ANY(86,88,90); # 錯誤語句
SELECT * FROM score WHERE degree = ANY(SELECT degree FROM score WHERE degree BETWEEN 70 AND 90);
SELECT * FROM score WHERE degree >= ANY(SELECT degree FROM score WHERE degree BETWEEN 70 AND 90);
  • 從上邊的語句可以看出,in中可以直接寫數值,但是all和any不能直接寫數值
  • all和any語句中要放入查詢一個列的子查詢語句,子查詢語句的類型要和作比較的條件類型一致
  • all、any、some必須和比較運算符結合使用,不能單獨使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM