0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLのALLについて

Posted at

前回の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ですのでりんごは抽出されていません。
これはこれで使い道のありそうな句なので、覚えておくといいかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?