【SQL】ANY SOME ALL について
SQLと数年戯れていながら、SOME,ANY,ALLというキーワードを知らなかった。
使い方を調べたのでその備忘録。
まず、それらと使い方が似ているINキーワードの使い方の確認
exper IN (value,...)
exper IN (subquery)
experが値リストもしくはサブクエリの結果セットのどれかと等しい場合はtrue、
そうでない場合はfalseを返す。
exper IN (value1,value2,value3)
は
(exper=value1 OR exper=value2 OR exper=value3)
と等価
ANY , SOME について
exper comparator ANY (subquery)
※comparatorは比較演算子
experが結果セットのどれかとcomparatorの関係を満たすときにtrue、
そうでない場合にfalseを返す。
table1
-------------
|id | value |
-------------
|1 | 10 |
|2 | 20 |
|3 | 30 |
-------------
というテーブルがあった場合に
15 > ANY (SELECT value FROM table1 )
は
15 > 10
が成り立つのでtrueと評価される
INと違い、ANYはリストを引数に取れない
SOMEはANYのエイリアス(MySQLの場合)
ALL について
exper comparator ALL (subquery)
experが結果セットの全てとcomparatorの関係を満たすときにtrue、
そうでない場合にfalseを返す。
40 > ALL (SELECT value FROM table1)
は true
(40 > 10
, 40 > 20
, 40 > 30
全てが成り立つ)
25 > ALL (SELECT value FROM table1)
は false となる
(25 > 30
が成り立たない)
ALLも値リストを引数に取れない
調べて思ったこと
使いどころがパッと思い浮かばない
もしかしたら将来使うときがくるかもしれないが、
もしかしたら一生使うことが無いかもしれない