blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

【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も値リストを引数に取れない

調べて思ったこと

使いどころがパッと思い浮かばない
もしかしたら将来使うときがくるかもしれないが、
もしかしたら一生使うことが無いかもしれない