前回のANY/SOMEと同じ種類の句を発見したので、こちらについてもメモ書き程度に記事を作成しておきます。
ANY/SOMEは「条件に一致するどれか一つにでも一致していれば、そのレコードを抽出する」といったものでしたが、ALLはその真逆で、「すべての条件に一致しているレコードだけを抽出する」という句です。
ひとまず、以下のようなテーブルとSQLを用意します。前回と同じです。
Div | Name | Price |
---|---|---|
01 | りんご | 200 |
02 | ぶどう | 100 |
01 | なし | 150 |
03 | みかん | 300 |
02 | ばなな | 250 |
SQL
SELECT * FROM TABLE1 WHERE Price > ALL (SELECT Price FROM TABLE1 WHERE Div = '01');
ALL句の直後に指定されているSELECT句を実行すると、200と150が返されます。
先程も説明しましたが、ALLは比較演算子の条件にすべて一致しているときにだけTrueを返すので、この場合、Priceが200より大きいレコードだけが返されることになります。
よって、上記のSQLを実行すると、以下のような結果が返されます。
Div | Name | Price |
---|---|---|
03 | みかん | 300 |
02 | ばなな | 250 |
前回のANY/SOMEでは「Priceが150より大きいレコードすべて」が抽出されていたので「Priceが200のりんご」が含まれていましたが、今回はALLですのでりんごは抽出されていません。
これはこれで使い道のありそうな句なので、覚えておくといいかもしれません。