SQLについていろいろと調べていて、ANY/SOMEというものを発見したので記事にしておこうと思います。
使ったことがない句なのでもしかしたらあまり使いどころがないのかもしれませんが……。
まず、以下のようなテーブルを用意します。
| Div | Name | Price |
|---|---|---|
| 01 | りんご | 200 |
| 02 | ぶどう | 100 |
| 01 | なし | 150 |
| 03 | みかん | 300 |
| 02 | ばなな | 250 |
SQL
SELECT * FROM TABLE1 WHERE Price > ANY (SELECT Price FROM TABLE1 WHERE Div = '01');
ANY句の直後に指定されているSELECT句を実行すると、200と150が返されます。
ANYは比較演算子の条件に一つでも一致しているとTrueを返すので、この場合、Priceが150より大きいレコードがすべて返されることになります。
よって、上記のSQLを実行すると、以下のような結果が返されます。
| Div | Name | Price |
|---|---|---|
| 01 | りんご | 200 |
| 03 | みかん | 300 |
| 02 | ばなな | 250 |
なお、SOMEはANYとまったく同じ動きをします。